Fossil SCM
Improvements to the g= query parameter on login redirects. This is an attempt to fix the problem described by [forum:/forumpost/f81625500d|forum post forum f81625500d].
Commit
3571c8715d512a281892724bcf32c081c963f6e0ffd501563db15a5ab62fce60
Parent
49071226680eae6…
1 file changed
+4
-8
+4
-8
| --- src/login.c | ||
| +++ src/login.c | ||
| @@ -105,11 +105,11 @@ | ||
| 105 | 105 | ** Or if there is no "g" query parameter, redirect to the homepage. |
| 106 | 106 | */ |
| 107 | 107 | static void redirect_to_g(void){ |
| 108 | 108 | const char *zGoto = P("g"); |
| 109 | 109 | if( zGoto ){ |
| 110 | - cgi_redirect(zGoto); | |
| 110 | + cgi_redirectf("%R/%s",zGoto); | |
| 111 | 111 | }else{ |
| 112 | 112 | fossil_redirect_home(); |
| 113 | 113 | } |
| 114 | 114 | } |
| 115 | 115 | |
| @@ -1479,22 +1479,18 @@ | ||
| 1479 | 1479 | /* NOTREACHED */ |
| 1480 | 1480 | assert(0); |
| 1481 | 1481 | }else |
| 1482 | 1482 | #endif /* FOSSIL_ENABLE_JSON */ |
| 1483 | 1483 | { |
| 1484 | - const char *zUrl = PD("REQUEST_URI", "index"); | |
| 1485 | 1484 | const char *zQS = P("QUERY_STRING"); |
| 1486 | - char *zUrlNoQS; | |
| 1487 | - int i; | |
| 1485 | + const char *zPathInfo = PD("PATH_INFO",""); | |
| 1488 | 1486 | Blob redir; |
| 1489 | 1487 | blob_init(&redir, 0, 0); |
| 1490 | - for(i=0; zUrl[i] && zUrl[i]!='?'; i++){} | |
| 1491 | - zUrlNoQS = fossil_strndup(zUrl, i); | |
| 1492 | 1488 | if( fossil_wants_https(1) ){ |
| 1493 | - blob_appendf(&redir, "%s/login?g=%T", g.zHttpsURL, zUrlNoQS); | |
| 1489 | + blob_appendf(&redir, "%s/login?g=%T", g.zHttpsURL, zPathInfo); | |
| 1494 | 1490 | }else{ |
| 1495 | - blob_appendf(&redir, "%R/login?g=%T", zUrlNoQS); | |
| 1491 | + blob_appendf(&redir, "%R/login?g=%T", zPathInfo); | |
| 1496 | 1492 | } |
| 1497 | 1493 | if( zQS && zQS[0] ){ |
| 1498 | 1494 | blob_appendf(&redir, "%%3f%T", zQS); |
| 1499 | 1495 | } |
| 1500 | 1496 | if( anonOk ) blob_append(&redir, "&anon", 5); |
| 1501 | 1497 |
| --- src/login.c | |
| +++ src/login.c | |
| @@ -105,11 +105,11 @@ | |
| 105 | ** Or if there is no "g" query parameter, redirect to the homepage. |
| 106 | */ |
| 107 | static void redirect_to_g(void){ |
| 108 | const char *zGoto = P("g"); |
| 109 | if( zGoto ){ |
| 110 | cgi_redirect(zGoto); |
| 111 | }else{ |
| 112 | fossil_redirect_home(); |
| 113 | } |
| 114 | } |
| 115 | |
| @@ -1479,22 +1479,18 @@ | |
| 1479 | /* NOTREACHED */ |
| 1480 | assert(0); |
| 1481 | }else |
| 1482 | #endif /* FOSSIL_ENABLE_JSON */ |
| 1483 | { |
| 1484 | const char *zUrl = PD("REQUEST_URI", "index"); |
| 1485 | const char *zQS = P("QUERY_STRING"); |
| 1486 | char *zUrlNoQS; |
| 1487 | int i; |
| 1488 | Blob redir; |
| 1489 | blob_init(&redir, 0, 0); |
| 1490 | for(i=0; zUrl[i] && zUrl[i]!='?'; i++){} |
| 1491 | zUrlNoQS = fossil_strndup(zUrl, i); |
| 1492 | if( fossil_wants_https(1) ){ |
| 1493 | blob_appendf(&redir, "%s/login?g=%T", g.zHttpsURL, zUrlNoQS); |
| 1494 | }else{ |
| 1495 | blob_appendf(&redir, "%R/login?g=%T", zUrlNoQS); |
| 1496 | } |
| 1497 | if( zQS && zQS[0] ){ |
| 1498 | blob_appendf(&redir, "%%3f%T", zQS); |
| 1499 | } |
| 1500 | if( anonOk ) blob_append(&redir, "&anon", 5); |
| 1501 |
| --- src/login.c | |
| +++ src/login.c | |
| @@ -105,11 +105,11 @@ | |
| 105 | ** Or if there is no "g" query parameter, redirect to the homepage. |
| 106 | */ |
| 107 | static void redirect_to_g(void){ |
| 108 | const char *zGoto = P("g"); |
| 109 | if( zGoto ){ |
| 110 | cgi_redirectf("%R/%s",zGoto); |
| 111 | }else{ |
| 112 | fossil_redirect_home(); |
| 113 | } |
| 114 | } |
| 115 | |
| @@ -1479,22 +1479,18 @@ | |
| 1479 | /* NOTREACHED */ |
| 1480 | assert(0); |
| 1481 | }else |
| 1482 | #endif /* FOSSIL_ENABLE_JSON */ |
| 1483 | { |
| 1484 | const char *zQS = P("QUERY_STRING"); |
| 1485 | const char *zPathInfo = PD("PATH_INFO",""); |
| 1486 | Blob redir; |
| 1487 | blob_init(&redir, 0, 0); |
| 1488 | if( fossil_wants_https(1) ){ |
| 1489 | blob_appendf(&redir, "%s/login?g=%T", g.zHttpsURL, zPathInfo); |
| 1490 | }else{ |
| 1491 | blob_appendf(&redir, "%R/login?g=%T", zPathInfo); |
| 1492 | } |
| 1493 | if( zQS && zQS[0] ){ |
| 1494 | blob_appendf(&redir, "%%3f%T", zQS); |
| 1495 | } |
| 1496 | if( anonOk ) blob_append(&redir, "&anon", 5); |
| 1497 |