Fossil SCM
Another attempt to adjust JSON session lifecycle.
Commit
a34c7b37f274b652304160f7ca802785788e38e425d147707f9dc52eea625926
Parent
37089a5ed10529e…
5 files changed
-16
+5
+5
+10
-5
+1
-16
| --- src/cgi.c | ||
| +++ src/cgi.c | ||
| @@ -1109,11 +1109,10 @@ | ||
| 1109 | 1109 | ** we are operating in JSON mode or not. We cannot, however, be |
| 1110 | 1110 | ** certain whether we should/need to be in JSON mode until the |
| 1111 | 1111 | ** PATH_INFO is set up. |
| 1112 | 1112 | */ |
| 1113 | 1113 | g.json.isJsonMode = 1; |
| 1114 | - json_mode_bootstrap(); | |
| 1115 | 1114 | }else{ |
| 1116 | 1115 | assert(!g.json.isJsonMode && |
| 1117 | 1116 | "Internal misconfiguration of g.json.isJsonMode"); |
| 1118 | 1117 | } |
| 1119 | 1118 | #endif |
| @@ -1813,25 +1812,10 @@ | ||
| 1813 | 1812 | |
| 1814 | 1813 | for(i=0; zToken[i] && zToken[i]!='?'; i++){} |
| 1815 | 1814 | if( zToken[i] ) zToken[i++] = 0; |
| 1816 | 1815 | if( nCycles==0 ){ |
| 1817 | 1816 | cgi_setenv("PATH_INFO", zToken); |
| 1818 | -#ifdef FOSSIL_ENABLE_JSON | |
| 1819 | - if(strncmp("/json",zToken,5)==0 | |
| 1820 | - && (zToken[5]==0 || zToken[5]=='/')){ | |
| 1821 | - /* We need to change some following behaviour depending on whether | |
| 1822 | - ** we are operating in JSON mode or not. We cannot, however, be | |
| 1823 | - ** certain whether we should/need to be in JSON mode until the | |
| 1824 | - ** PATH_INFO is set up. | |
| 1825 | - */ | |
| 1826 | - g.json.isJsonMode = 1; | |
| 1827 | - json_mode_bootstrap(); | |
| 1828 | - }else{ | |
| 1829 | - assert(!g.json.isJsonMode && | |
| 1830 | - "Internal misconfiguration of g.json.isJsonMode"); | |
| 1831 | - } | |
| 1832 | -#endif | |
| 1833 | 1817 | }else{ |
| 1834 | 1818 | cgi_replace_parameter("PATH_INFO", mprintf("%s",zToken)); |
| 1835 | 1819 | } |
| 1836 | 1820 | |
| 1837 | 1821 | /* Get all the optional fields that follow the first line. |
| 1838 | 1822 |
| --- src/cgi.c | |
| +++ src/cgi.c | |
| @@ -1109,11 +1109,10 @@ | |
| 1109 | ** we are operating in JSON mode or not. We cannot, however, be |
| 1110 | ** certain whether we should/need to be in JSON mode until the |
| 1111 | ** PATH_INFO is set up. |
| 1112 | */ |
| 1113 | g.json.isJsonMode = 1; |
| 1114 | json_mode_bootstrap(); |
| 1115 | }else{ |
| 1116 | assert(!g.json.isJsonMode && |
| 1117 | "Internal misconfiguration of g.json.isJsonMode"); |
| 1118 | } |
| 1119 | #endif |
| @@ -1813,25 +1812,10 @@ | |
| 1813 | |
| 1814 | for(i=0; zToken[i] && zToken[i]!='?'; i++){} |
| 1815 | if( zToken[i] ) zToken[i++] = 0; |
| 1816 | if( nCycles==0 ){ |
| 1817 | cgi_setenv("PATH_INFO", zToken); |
| 1818 | #ifdef FOSSIL_ENABLE_JSON |
| 1819 | if(strncmp("/json",zToken,5)==0 |
| 1820 | && (zToken[5]==0 || zToken[5]=='/')){ |
| 1821 | /* We need to change some following behaviour depending on whether |
| 1822 | ** we are operating in JSON mode or not. We cannot, however, be |
| 1823 | ** certain whether we should/need to be in JSON mode until the |
| 1824 | ** PATH_INFO is set up. |
| 1825 | */ |
| 1826 | g.json.isJsonMode = 1; |
| 1827 | json_mode_bootstrap(); |
| 1828 | }else{ |
| 1829 | assert(!g.json.isJsonMode && |
| 1830 | "Internal misconfiguration of g.json.isJsonMode"); |
| 1831 | } |
| 1832 | #endif |
| 1833 | }else{ |
| 1834 | cgi_replace_parameter("PATH_INFO", mprintf("%s",zToken)); |
| 1835 | } |
| 1836 | |
| 1837 | /* Get all the optional fields that follow the first line. |
| 1838 |
| --- src/cgi.c | |
| +++ src/cgi.c | |
| @@ -1109,11 +1109,10 @@ | |
| 1109 | ** we are operating in JSON mode or not. We cannot, however, be |
| 1110 | ** certain whether we should/need to be in JSON mode until the |
| 1111 | ** PATH_INFO is set up. |
| 1112 | */ |
| 1113 | g.json.isJsonMode = 1; |
| 1114 | }else{ |
| 1115 | assert(!g.json.isJsonMode && |
| 1116 | "Internal misconfiguration of g.json.isJsonMode"); |
| 1117 | } |
| 1118 | #endif |
| @@ -1813,25 +1812,10 @@ | |
| 1812 | |
| 1813 | for(i=0; zToken[i] && zToken[i]!='?'; i++){} |
| 1814 | if( zToken[i] ) zToken[i++] = 0; |
| 1815 | if( nCycles==0 ){ |
| 1816 | cgi_setenv("PATH_INFO", zToken); |
| 1817 | }else{ |
| 1818 | cgi_replace_parameter("PATH_INFO", mprintf("%s",zToken)); |
| 1819 | } |
| 1820 | |
| 1821 | /* Get all the optional fields that follow the first line. |
| 1822 |
M
src/db.c
+5
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -78,10 +78,15 @@ | ||
| 78 | 78 | va_start(ap, zFormat); |
| 79 | 79 | z = vmprintf(zFormat, ap); |
| 80 | 80 | va_end(ap); |
| 81 | 81 | #ifdef FOSSIL_ENABLE_JSON |
| 82 | 82 | if( g.json.isJsonMode ){ |
| 83 | + /* | |
| 84 | + ** Avoid calling into the JSON support subsystem if it | |
| 85 | + ** has not yet been initialized, e.g. early SQLite log | |
| 86 | + ** messages, etc. | |
| 87 | + */ | |
| 83 | 88 | if( !json_is_main_boostrapped() ) json_main_bootstrap(); |
| 84 | 89 | json_err( 0, z, 1 ); |
| 85 | 90 | } |
| 86 | 91 | else |
| 87 | 92 | #endif /* FOSSIL_ENABLE_JSON */ |
| 88 | 93 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -78,10 +78,15 @@ | |
| 78 | va_start(ap, zFormat); |
| 79 | z = vmprintf(zFormat, ap); |
| 80 | va_end(ap); |
| 81 | #ifdef FOSSIL_ENABLE_JSON |
| 82 | if( g.json.isJsonMode ){ |
| 83 | if( !json_is_main_boostrapped() ) json_main_bootstrap(); |
| 84 | json_err( 0, z, 1 ); |
| 85 | } |
| 86 | else |
| 87 | #endif /* FOSSIL_ENABLE_JSON */ |
| 88 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -78,10 +78,15 @@ | |
| 78 | va_start(ap, zFormat); |
| 79 | z = vmprintf(zFormat, ap); |
| 80 | va_end(ap); |
| 81 | #ifdef FOSSIL_ENABLE_JSON |
| 82 | if( g.json.isJsonMode ){ |
| 83 | /* |
| 84 | ** Avoid calling into the JSON support subsystem if it |
| 85 | ** has not yet been initialized, e.g. early SQLite log |
| 86 | ** messages, etc. |
| 87 | */ |
| 88 | if( !json_is_main_boostrapped() ) json_main_bootstrap(); |
| 89 | json_err( 0, z, 1 ); |
| 90 | } |
| 91 | else |
| 92 | #endif /* FOSSIL_ENABLE_JSON */ |
| 93 |
+5
| --- src/main.c | ||
| +++ src/main.c | ||
| @@ -1915,10 +1915,15 @@ | ||
| 1915 | 1915 | @ <h1>Server Configuration Error</h1> |
| 1916 | 1916 | @ <p>The database schema on the server is out-of-date. Please ask |
| 1917 | 1917 | @ the administrator to run <b>fossil rebuild</b>.</p> |
| 1918 | 1918 | } |
| 1919 | 1919 | }else{ |
| 1920 | +#ifdef FOSSIL_ENABLE_JSON | |
| 1921 | + if( g.json.isJsonMode ){ | |
| 1922 | + json_mode_bootstrap(); | |
| 1923 | + } | |
| 1924 | +#endif | |
| 1920 | 1925 | if( (pCmd->eCmdFlags & CMDFLAG_RAWCONTENT)==0 ){ |
| 1921 | 1926 | cgi_decode_post_parameters(); |
| 1922 | 1927 | } |
| 1923 | 1928 | if( g.fCgiTrace ){ |
| 1924 | 1929 | fossil_trace("######## Calling %s #########\n", pCmd->zName); |
| 1925 | 1930 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -1915,10 +1915,15 @@ | |
| 1915 | @ <h1>Server Configuration Error</h1> |
| 1916 | @ <p>The database schema on the server is out-of-date. Please ask |
| 1917 | @ the administrator to run <b>fossil rebuild</b>.</p> |
| 1918 | } |
| 1919 | }else{ |
| 1920 | if( (pCmd->eCmdFlags & CMDFLAG_RAWCONTENT)==0 ){ |
| 1921 | cgi_decode_post_parameters(); |
| 1922 | } |
| 1923 | if( g.fCgiTrace ){ |
| 1924 | fossil_trace("######## Calling %s #########\n", pCmd->zName); |
| 1925 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -1915,10 +1915,15 @@ | |
| 1915 | @ <h1>Server Configuration Error</h1> |
| 1916 | @ <p>The database schema on the server is out-of-date. Please ask |
| 1917 | @ the administrator to run <b>fossil rebuild</b>.</p> |
| 1918 | } |
| 1919 | }else{ |
| 1920 | #ifdef FOSSIL_ENABLE_JSON |
| 1921 | if( g.json.isJsonMode ){ |
| 1922 | json_mode_bootstrap(); |
| 1923 | } |
| 1924 | #endif |
| 1925 | if( (pCmd->eCmdFlags & CMDFLAG_RAWCONTENT)==0 ){ |
| 1926 | cgi_decode_post_parameters(); |
| 1927 | } |
| 1928 | if( g.fCgiTrace ){ |
| 1929 | fossil_trace("######## Calling %s #########\n", pCmd->zName); |
| 1930 |
+10
-5
| --- src/printf.c | ||
| +++ src/printf.c | ||
| @@ -1076,10 +1076,15 @@ | ||
| 1076 | 1076 | ** Write error message output |
| 1077 | 1077 | */ |
| 1078 | 1078 | static int fossil_print_error(int rc, const char *z){ |
| 1079 | 1079 | #ifdef FOSSIL_ENABLE_JSON |
| 1080 | 1080 | if( g.json.isJsonMode ){ |
| 1081 | + /* | |
| 1082 | + ** Avoid calling into the JSON support subsystem if it | |
| 1083 | + ** has not yet been initialized, e.g. early SQLite log | |
| 1084 | + ** messages, etc. | |
| 1085 | + */ | |
| 1081 | 1086 | if( !json_is_main_boostrapped() ) json_main_bootstrap(); |
| 1082 | 1087 | json_err( 0, z, 1 ); |
| 1083 | 1088 | if( g.isHTTP && !g.json.preserveRc ){ |
| 1084 | 1089 | rc = 0 /* avoid HTTP 500 */; |
| 1085 | 1090 | } |
| @@ -1191,16 +1196,16 @@ | ||
| 1191 | 1196 | va_start(ap, zFormat); |
| 1192 | 1197 | z = vmprintf(zFormat, ap); |
| 1193 | 1198 | va_end(ap); |
| 1194 | 1199 | fossil_errorlog("warning: %s", z); |
| 1195 | 1200 | #ifdef FOSSIL_ENABLE_JSON |
| 1196 | - /* | |
| 1197 | - ** Avoid calling into the JSON support subsystem if it | |
| 1198 | - ** has not yet been initialized, e.g. early SQLite log | |
| 1199 | - ** messages, etc. | |
| 1200 | - */ | |
| 1201 | 1201 | if(g.json.isJsonMode){ |
| 1202 | + /* | |
| 1203 | + ** Avoid calling into the JSON support subsystem if it | |
| 1204 | + ** has not yet been initialized, e.g. early SQLite log | |
| 1205 | + ** messages, etc. | |
| 1206 | + */ | |
| 1202 | 1207 | if( !json_is_main_boostrapped() ) json_main_bootstrap(); |
| 1203 | 1208 | json_warn( FSL_JSON_W_UNKNOWN, "%s", z ); |
| 1204 | 1209 | }else |
| 1205 | 1210 | #endif |
| 1206 | 1211 | { |
| 1207 | 1212 |
| --- src/printf.c | |
| +++ src/printf.c | |
| @@ -1076,10 +1076,15 @@ | |
| 1076 | ** Write error message output |
| 1077 | */ |
| 1078 | static int fossil_print_error(int rc, const char *z){ |
| 1079 | #ifdef FOSSIL_ENABLE_JSON |
| 1080 | if( g.json.isJsonMode ){ |
| 1081 | if( !json_is_main_boostrapped() ) json_main_bootstrap(); |
| 1082 | json_err( 0, z, 1 ); |
| 1083 | if( g.isHTTP && !g.json.preserveRc ){ |
| 1084 | rc = 0 /* avoid HTTP 500 */; |
| 1085 | } |
| @@ -1191,16 +1196,16 @@ | |
| 1191 | va_start(ap, zFormat); |
| 1192 | z = vmprintf(zFormat, ap); |
| 1193 | va_end(ap); |
| 1194 | fossil_errorlog("warning: %s", z); |
| 1195 | #ifdef FOSSIL_ENABLE_JSON |
| 1196 | /* |
| 1197 | ** Avoid calling into the JSON support subsystem if it |
| 1198 | ** has not yet been initialized, e.g. early SQLite log |
| 1199 | ** messages, etc. |
| 1200 | */ |
| 1201 | if(g.json.isJsonMode){ |
| 1202 | if( !json_is_main_boostrapped() ) json_main_bootstrap(); |
| 1203 | json_warn( FSL_JSON_W_UNKNOWN, "%s", z ); |
| 1204 | }else |
| 1205 | #endif |
| 1206 | { |
| 1207 |
| --- src/printf.c | |
| +++ src/printf.c | |
| @@ -1076,10 +1076,15 @@ | |
| 1076 | ** Write error message output |
| 1077 | */ |
| 1078 | static int fossil_print_error(int rc, const char *z){ |
| 1079 | #ifdef FOSSIL_ENABLE_JSON |
| 1080 | if( g.json.isJsonMode ){ |
| 1081 | /* |
| 1082 | ** Avoid calling into the JSON support subsystem if it |
| 1083 | ** has not yet been initialized, e.g. early SQLite log |
| 1084 | ** messages, etc. |
| 1085 | */ |
| 1086 | if( !json_is_main_boostrapped() ) json_main_bootstrap(); |
| 1087 | json_err( 0, z, 1 ); |
| 1088 | if( g.isHTTP && !g.json.preserveRc ){ |
| 1089 | rc = 0 /* avoid HTTP 500 */; |
| 1090 | } |
| @@ -1191,16 +1196,16 @@ | |
| 1196 | va_start(ap, zFormat); |
| 1197 | z = vmprintf(zFormat, ap); |
| 1198 | va_end(ap); |
| 1199 | fossil_errorlog("warning: %s", z); |
| 1200 | #ifdef FOSSIL_ENABLE_JSON |
| 1201 | if(g.json.isJsonMode){ |
| 1202 | /* |
| 1203 | ** Avoid calling into the JSON support subsystem if it |
| 1204 | ** has not yet been initialized, e.g. early SQLite log |
| 1205 | ** messages, etc. |
| 1206 | */ |
| 1207 | if( !json_is_main_boostrapped() ) json_main_bootstrap(); |
| 1208 | json_warn( FSL_JSON_W_UNKNOWN, "%s", z ); |
| 1209 | }else |
| 1210 | #endif |
| 1211 | { |
| 1212 |
+1
| --- src/th_main.c | ||
| +++ src/th_main.c | ||
| @@ -128,10 +128,11 @@ | ||
| 128 | 128 | ** it for use. |
| 129 | 129 | */ |
| 130 | 130 | void Th_InitTraceLog(){ |
| 131 | 131 | g.thTrace = find_option("th-trace", 0, 0)!=0; |
| 132 | 132 | if( g.thTrace ){ |
| 133 | + g.fAnyTrace = 1; | |
| 133 | 134 | blob_zero(&g.thLog); |
| 134 | 135 | } |
| 135 | 136 | } |
| 136 | 137 | |
| 137 | 138 | /* |
| 138 | 139 |
| --- src/th_main.c | |
| +++ src/th_main.c | |
| @@ -128,10 +128,11 @@ | |
| 128 | ** it for use. |
| 129 | */ |
| 130 | void Th_InitTraceLog(){ |
| 131 | g.thTrace = find_option("th-trace", 0, 0)!=0; |
| 132 | if( g.thTrace ){ |
| 133 | blob_zero(&g.thLog); |
| 134 | } |
| 135 | } |
| 136 | |
| 137 | /* |
| 138 |
| --- src/th_main.c | |
| +++ src/th_main.c | |
| @@ -128,10 +128,11 @@ | |
| 128 | ** it for use. |
| 129 | */ |
| 130 | void Th_InitTraceLog(){ |
| 131 | g.thTrace = find_option("th-trace", 0, 0)!=0; |
| 132 | if( g.thTrace ){ |
| 133 | g.fAnyTrace = 1; |
| 134 | blob_zero(&g.thLog); |
| 135 | } |
| 136 | } |
| 137 | |
| 138 | /* |
| 139 |