Fossil SCM

Merge changes to normalize the URL of HTTP requests.

drh 2021-02-09 21:15 trunk merge
Commit 7e937012944ab989876d1b6c0181656f7f1114ebe858ba21426354ab2bdb02cc
1 file changed +14 -5
+14 -5
--- src/main.c
+++ src/main.c
@@ -1367,24 +1367,33 @@
13671367
fossil_fatal("argument to --baseurl should be 'http://host/path'"
13681368
" or 'https://host/path'");
13691369
}
13701370
if( g.zTop[1]==0 ) g.zTop++;
13711371
}else{
1372
+ char *z;
13721373
zHost = PD("HTTP_HOST","");
1374
+ z = fossil_strdup(zHost);
1375
+ for(i=0; z[i]; i++){
1376
+ if( z[i]<='Z' && z[i]>='A' ) z[i] += 'a' - 'A';
1377
+ }
1378
+ if( i>3 && z[i-1]=='0' && z[i-2]=='8' && z[i-3]==':' ) i -= 3;
1379
+ if( i && z[i-1]=='.' ) i--;
1380
+ z[i] = 0;
13731381
zMode = PD("HTTPS","off");
13741382
zCur = PD("SCRIPT_NAME","/");
13751383
i = strlen(zCur);
13761384
while( i>0 && zCur[i-1]=='/' ) i--;
13771385
if( fossil_stricmp(zMode,"on")==0 ){
1378
- g.zBaseURL = mprintf("https://%s%.*s", zHost, i, zCur);
1379
- g.zTop = &g.zBaseURL[8+strlen(zHost)];
1386
+ g.zBaseURL = mprintf("https://%s%.*s", z, i, zCur);
1387
+ g.zTop = &g.zBaseURL[8+strlen(z)];
13801388
g.zHttpsURL = g.zBaseURL;
13811389
}else{
1382
- g.zBaseURL = mprintf("http://%s%.*s", zHost, i, zCur);
1383
- g.zTop = &g.zBaseURL[7+strlen(zHost)];
1384
- g.zHttpsURL = mprintf("https://%s%.*s", zHost, i, zCur);
1390
+ g.zBaseURL = mprintf("http://%s%.*s", z, i, zCur);
1391
+ g.zTop = &g.zBaseURL[7+strlen(z)];
1392
+ g.zHttpsURL = mprintf("https://%s%.*s", z, i, zCur);
13851393
}
1394
+ fossil_free(z);
13861395
}
13871396
if( db_is_writeable("repository") ){
13881397
int nBase = (int)strlen(g.zBaseURL);
13891398
char *zBase = g.zBaseURL;
13901399
if( g.nExtraURL>0 && g.nExtraURL<nBase-6 ){
13911400
--- src/main.c
+++ src/main.c
@@ -1367,24 +1367,33 @@
1367 fossil_fatal("argument to --baseurl should be 'http://host/path'"
1368 " or 'https://host/path'");
1369 }
1370 if( g.zTop[1]==0 ) g.zTop++;
1371 }else{
 
1372 zHost = PD("HTTP_HOST","");
 
 
 
 
 
 
 
1373 zMode = PD("HTTPS","off");
1374 zCur = PD("SCRIPT_NAME","/");
1375 i = strlen(zCur);
1376 while( i>0 && zCur[i-1]=='/' ) i--;
1377 if( fossil_stricmp(zMode,"on")==0 ){
1378 g.zBaseURL = mprintf("https://%s%.*s", zHost, i, zCur);
1379 g.zTop = &g.zBaseURL[8+strlen(zHost)];
1380 g.zHttpsURL = g.zBaseURL;
1381 }else{
1382 g.zBaseURL = mprintf("http://%s%.*s", zHost, i, zCur);
1383 g.zTop = &g.zBaseURL[7+strlen(zHost)];
1384 g.zHttpsURL = mprintf("https://%s%.*s", zHost, i, zCur);
1385 }
 
1386 }
1387 if( db_is_writeable("repository") ){
1388 int nBase = (int)strlen(g.zBaseURL);
1389 char *zBase = g.zBaseURL;
1390 if( g.nExtraURL>0 && g.nExtraURL<nBase-6 ){
1391
--- src/main.c
+++ src/main.c
@@ -1367,24 +1367,33 @@
1367 fossil_fatal("argument to --baseurl should be 'http://host/path'"
1368 " or 'https://host/path'");
1369 }
1370 if( g.zTop[1]==0 ) g.zTop++;
1371 }else{
1372 char *z;
1373 zHost = PD("HTTP_HOST","");
1374 z = fossil_strdup(zHost);
1375 for(i=0; z[i]; i++){
1376 if( z[i]<='Z' && z[i]>='A' ) z[i] += 'a' - 'A';
1377 }
1378 if( i>3 && z[i-1]=='0' && z[i-2]=='8' && z[i-3]==':' ) i -= 3;
1379 if( i && z[i-1]=='.' ) i--;
1380 z[i] = 0;
1381 zMode = PD("HTTPS","off");
1382 zCur = PD("SCRIPT_NAME","/");
1383 i = strlen(zCur);
1384 while( i>0 && zCur[i-1]=='/' ) i--;
1385 if( fossil_stricmp(zMode,"on")==0 ){
1386 g.zBaseURL = mprintf("https://%s%.*s", z, i, zCur);
1387 g.zTop = &g.zBaseURL[8+strlen(z)];
1388 g.zHttpsURL = g.zBaseURL;
1389 }else{
1390 g.zBaseURL = mprintf("http://%s%.*s", z, i, zCur);
1391 g.zTop = &g.zBaseURL[7+strlen(z)];
1392 g.zHttpsURL = mprintf("https://%s%.*s", z, i, zCur);
1393 }
1394 fossil_free(z);
1395 }
1396 if( db_is_writeable("repository") ){
1397 int nBase = (int)strlen(g.zBaseURL);
1398 char *zBase = g.zBaseURL;
1399 if( g.nExtraURL>0 && g.nExtraURL<nBase-6 ){
1400

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button