@@ -1174,10 +1174,14 @@
1174 1174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1175 1175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** REQUEST_URI, PATH_INFO, and SCRIPT_NAME are related as follows:
1176 1176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1177 1177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** REQUEST_URI == SCRIPT_NAME + PATH_INFO
1178 1178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Or if QUERY_STRING is not empty:
1180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** REQUEST_URI == SCRIPT_NAME + PATH_INFO + '?' + QUERY_STRING
1182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1179 1183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Where "+" means concatenate. Fossil requires SCRIPT_NAME. If
1180 1184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** REQUEST_URI is provided but PATH_INFO is not, then PATH_INFO is
1181 1185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** computed from REQUEST_URI and SCRIPT_NAME. If PATH_INFO is provided
1182 1186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** but REQUEST_URI is not, then compute REQUEST_URI from PATH_INFO and
1183 1187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SCRIPT_NAME. If neither REQUEST_URI nor PATH_INFO are provided, then
@@ -1193,12 +1197,12 @@
1193 1197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** PATH_INFO when it is empty.
1194 1198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1195 1199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CGI Parameter quick reference:
1196 1200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1197 1201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** REQUEST_URI
1198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** _____________|____________
1199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** / \
1202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** _____________|________________
1203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** / \
1200 1204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** https://www.fossil-scm.org/forum/info/12736b30c072551a?t=c
1201 1205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** \________________/\____/\____________________/ \_/
1202 1206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** | | | |
1203 1207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** HTTP_HOST | PATH_INFO QUERY_STRING
1204 1208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SCRIPT_NAME
@@ -1226,11 +1230,16 @@
1226 1230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zScriptName==0 ){
1227 1231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
size_t nRU, nPI;
1228 1232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRequestUri==0 || zPathInfo==0 ){
1229 1233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
malformed_request("missing SCRIPT_NAME"); /* Does not return */
1230 1234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nRU = strlen(zRequestUri);
1235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z = strchr(zRequestUri,'?');
1236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z ){
1237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nRU = (int)(z - zRequestUri);
1238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nRU = strlen(zRequestUri);
1240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1232 1241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nPI = strlen(zPathInfo);
1233 1242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nRU<nPI ){
1234 1243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
malformed_request("PATH_INFO is longer than REQUEST_URI");
1235 1244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1236 1245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zScriptName = fossil_strndup(zRequestUri,(int)(nRU-nPI));
@@ -1251,15 +1260,20 @@
1251 1260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_replace_parameter("PATH_INFO", zPathInfo);
1252 1261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1253 1262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
1254 1263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRequestUri==0 ){
1255 1264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z = zPathInfo;
1265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zQS = cgi_parameter("QUERY_STRING",0);
1256 1266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zPathInfo==0 ){
1257 1267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
malformed_request("missing PATH_INFO and/or REQUEST_URI");
1258 1268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1259 1269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( z[0]=='/' ) z++;
1260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zRequestUri = mprintf("%s/%s", zScriptName, z);
1270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zQS && zQS[0] ){
1271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zRequestUri = mprintf("%s/%s?%s", zScriptName, z, zQS);
1272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zRequestUri = mprintf("%s/%s", zScriptName, z);
1274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1261 1275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_set_parameter("REQUEST_URI", zRequestUri);
1262 1276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1263 1277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zPathInfo==0 ){
1264 1278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, j;
1265 1279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; zRequestUri[i]==zScriptName[i] && zRequestUri[i]; i++){}
@@ -1866,14 +1880,14 @@
1866 1880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_setenv("REQUEST_METHOD",zToken);
1867 1881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zToken = extract_token(z, &z);
1868 1882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zToken==0 ){
1869 1883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
malformed_request("malformed URL in HTTP header");
1870 1884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_setenv("REQUEST_URI", zToken);
1871 1886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_setenv("SCRIPT_NAME", "");
1872 1887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; zToken[i] && zToken[i]!='?'; i++){}
1873 1888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zToken[i] ) zToken[i++] = 0;
1874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_setenv("REQUEST_URI", zToken);
1875 1889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_setenv("PATH_INFO", zToken);
1876 1890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_setenv("QUERY_STRING", &zToken[i]);
1877 1891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zIpAddr==0 ){
1878 1892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zIpAddr = cgi_remote_ip(fileno(g.httpIn));
1879 1893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1880 1894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!