Fossil SCM
Debugging changes in url.c: Ensure that each new UrlData object parse is fully reinitialized. Bring out printing of g.url into a separate routine so that it can be called during debugging.
Commit
97b3f955b2a6431e0f363b159190032ef4d8c2b6e68111f1b394e8b504b9a224
Parent
d07689d11d36645…
1 file changed
+28
-23
+28
-23
| --- src/url.c | ||
| +++ src/url.c | ||
| @@ -113,11 +113,11 @@ | ||
| 113 | 113 | UrlData *pUrlData |
| 114 | 114 | ){ |
| 115 | 115 | int i, j, c; |
| 116 | 116 | char *zFile = 0; |
| 117 | 117 | |
| 118 | - pUrlData->pwConfig = 0; | |
| 118 | + memset(pUrlData, 0, sizeof(*pUrlData)); | |
| 119 | 119 | if( urlFlags & URL_USE_CONFIG ){ |
| 120 | 120 | if( zUrl==0 || strcmp(zUrl,"default")==0 ){ |
| 121 | 121 | const char *zPwConfig = "last-sync-pw"; |
| 122 | 122 | if( urlFlags & URL_USE_PARENT ){ |
| 123 | 123 | zUrl = db_get("parent-project-url", 0); |
| @@ -162,12 +162,10 @@ | ||
| 162 | 162 | int iStart; |
| 163 | 163 | char *zLogin; |
| 164 | 164 | char *zExe; |
| 165 | 165 | char cQuerySep = '?'; |
| 166 | 166 | |
| 167 | - pUrlData->isFile = 0; | |
| 168 | - pUrlData->useProxy = 0; | |
| 169 | 167 | if( zUrl[4]=='s' ){ |
| 170 | 168 | pUrlData->isHttps = 1; |
| 171 | 169 | pUrlData->protocol = "https"; |
| 172 | 170 | pUrlData->dfltPort = 443; |
| 173 | 171 | iStart = 8; |
| @@ -458,10 +456,36 @@ | ||
| 458 | 456 | ** g.url.pwConfig is NULL. |
| 459 | 457 | */ |
| 460 | 458 | void url_parse(const char *zUrl, unsigned int urlFlags){ |
| 461 | 459 | url_parse_local(zUrl, urlFlags, &g.url); |
| 462 | 460 | } |
| 461 | + | |
| 462 | +/* | |
| 463 | +** Print the content of g.url | |
| 464 | +*/ | |
| 465 | +void urlparse_print(int showPw){ | |
| 466 | + fossil_print("g.url.isFile = %d\n", g.url.isFile); | |
| 467 | + fossil_print("g.url.isHttps = %d\n", g.url.isHttps); | |
| 468 | + fossil_print("g.url.isSsh = %d\n", g.url.isSsh); | |
| 469 | + fossil_print("g.url.protocol = %s\n", g.url.protocol); | |
| 470 | + fossil_print("g.url.name = %s\n", g.url.name); | |
| 471 | + fossil_print("g.url.port = %d\n", g.url.port); | |
| 472 | + fossil_print("g.url.dfltPort = %d\n", g.url.dfltPort); | |
| 473 | + fossil_print("g.url.hostname = %s\n", g.url.hostname); | |
| 474 | + fossil_print("g.url.path = %s\n", g.url.path); | |
| 475 | + fossil_print("g.url.user = %s\n", g.url.user); | |
| 476 | + if( showPw || g.url.pwConfig==0 ){ | |
| 477 | + fossil_print("g.url.passwd = %s\n", g.url.passwd); | |
| 478 | + }else{ | |
| 479 | + fossil_print("g.url.passwd = ************\n"); | |
| 480 | + } | |
| 481 | + fossil_print("g.url.pwConfig = %s\n", g.url.pwConfig); | |
| 482 | + fossil_print("g.url.canonical = %s\n", g.url.canonical); | |
| 483 | + fossil_print("g.url.fossil = %s\n", g.url.fossil); | |
| 484 | + fossil_print("g.url.flags = 0x%04x\n", g.url.flags); | |
| 485 | + fossil_print("url_full(g.url) = %z\n", url_full(&g.url)); | |
| 486 | +} | |
| 463 | 487 | |
| 464 | 488 | /* |
| 465 | 489 | ** COMMAND: test-urlparser |
| 466 | 490 | ** |
| 467 | 491 | ** Usage: %fossil test-urlparser URL ?options? |
| @@ -487,30 +511,11 @@ | ||
| 487 | 511 | if( g.argc!=3 && g.argc!=4 ){ |
| 488 | 512 | usage("URL"); |
| 489 | 513 | } |
| 490 | 514 | url_parse(g.argv[2], fg); |
| 491 | 515 | for(i=0; i<2; i++){ |
| 492 | - fossil_print("g.url.isFile = %d\n", g.url.isFile); | |
| 493 | - fossil_print("g.url.isHttps = %d\n", g.url.isHttps); | |
| 494 | - fossil_print("g.url.isSsh = %d\n", g.url.isSsh); | |
| 495 | - fossil_print("g.url.protocol = %s\n", g.url.protocol); | |
| 496 | - fossil_print("g.url.name = %s\n", g.url.name); | |
| 497 | - fossil_print("g.url.port = %d\n", g.url.port); | |
| 498 | - fossil_print("g.url.dfltPort = %d\n", g.url.dfltPort); | |
| 499 | - fossil_print("g.url.hostname = %s\n", g.url.hostname); | |
| 500 | - fossil_print("g.url.path = %s\n", g.url.path); | |
| 501 | - fossil_print("g.url.user = %s\n", g.url.user); | |
| 502 | - if( showPw || g.url.pwConfig==0 ){ | |
| 503 | - fossil_print("g.url.passwd = %s\n", g.url.passwd); | |
| 504 | - }else{ | |
| 505 | - fossil_print("g.url.passwd = ************\n"); | |
| 506 | - } | |
| 507 | - fossil_print("g.url.pwConfig = %s\n", g.url.pwConfig); | |
| 508 | - fossil_print("g.url.canonical = %s\n", g.url.canonical); | |
| 509 | - fossil_print("g.url.fossil = %s\n", g.url.fossil); | |
| 510 | - fossil_print("g.url.flags = 0x%04x\n", g.url.flags); | |
| 511 | - fossil_print("url_full(g.url) = %z\n", url_full(&g.url)); | |
| 516 | + urlparse_print(showPw); | |
| 512 | 517 | if( g.url.isFile || g.url.isSsh ) break; |
| 513 | 518 | if( i==0 ){ |
| 514 | 519 | fossil_print("********\n"); |
| 515 | 520 | url_enable_proxy("Using proxy: "); |
| 516 | 521 | } |
| 517 | 522 |
| --- src/url.c | |
| +++ src/url.c | |
| @@ -113,11 +113,11 @@ | |
| 113 | UrlData *pUrlData |
| 114 | ){ |
| 115 | int i, j, c; |
| 116 | char *zFile = 0; |
| 117 | |
| 118 | pUrlData->pwConfig = 0; |
| 119 | if( urlFlags & URL_USE_CONFIG ){ |
| 120 | if( zUrl==0 || strcmp(zUrl,"default")==0 ){ |
| 121 | const char *zPwConfig = "last-sync-pw"; |
| 122 | if( urlFlags & URL_USE_PARENT ){ |
| 123 | zUrl = db_get("parent-project-url", 0); |
| @@ -162,12 +162,10 @@ | |
| 162 | int iStart; |
| 163 | char *zLogin; |
| 164 | char *zExe; |
| 165 | char cQuerySep = '?'; |
| 166 | |
| 167 | pUrlData->isFile = 0; |
| 168 | pUrlData->useProxy = 0; |
| 169 | if( zUrl[4]=='s' ){ |
| 170 | pUrlData->isHttps = 1; |
| 171 | pUrlData->protocol = "https"; |
| 172 | pUrlData->dfltPort = 443; |
| 173 | iStart = 8; |
| @@ -458,10 +456,36 @@ | |
| 458 | ** g.url.pwConfig is NULL. |
| 459 | */ |
| 460 | void url_parse(const char *zUrl, unsigned int urlFlags){ |
| 461 | url_parse_local(zUrl, urlFlags, &g.url); |
| 462 | } |
| 463 | |
| 464 | /* |
| 465 | ** COMMAND: test-urlparser |
| 466 | ** |
| 467 | ** Usage: %fossil test-urlparser URL ?options? |
| @@ -487,30 +511,11 @@ | |
| 487 | if( g.argc!=3 && g.argc!=4 ){ |
| 488 | usage("URL"); |
| 489 | } |
| 490 | url_parse(g.argv[2], fg); |
| 491 | for(i=0; i<2; i++){ |
| 492 | fossil_print("g.url.isFile = %d\n", g.url.isFile); |
| 493 | fossil_print("g.url.isHttps = %d\n", g.url.isHttps); |
| 494 | fossil_print("g.url.isSsh = %d\n", g.url.isSsh); |
| 495 | fossil_print("g.url.protocol = %s\n", g.url.protocol); |
| 496 | fossil_print("g.url.name = %s\n", g.url.name); |
| 497 | fossil_print("g.url.port = %d\n", g.url.port); |
| 498 | fossil_print("g.url.dfltPort = %d\n", g.url.dfltPort); |
| 499 | fossil_print("g.url.hostname = %s\n", g.url.hostname); |
| 500 | fossil_print("g.url.path = %s\n", g.url.path); |
| 501 | fossil_print("g.url.user = %s\n", g.url.user); |
| 502 | if( showPw || g.url.pwConfig==0 ){ |
| 503 | fossil_print("g.url.passwd = %s\n", g.url.passwd); |
| 504 | }else{ |
| 505 | fossil_print("g.url.passwd = ************\n"); |
| 506 | } |
| 507 | fossil_print("g.url.pwConfig = %s\n", g.url.pwConfig); |
| 508 | fossil_print("g.url.canonical = %s\n", g.url.canonical); |
| 509 | fossil_print("g.url.fossil = %s\n", g.url.fossil); |
| 510 | fossil_print("g.url.flags = 0x%04x\n", g.url.flags); |
| 511 | fossil_print("url_full(g.url) = %z\n", url_full(&g.url)); |
| 512 | if( g.url.isFile || g.url.isSsh ) break; |
| 513 | if( i==0 ){ |
| 514 | fossil_print("********\n"); |
| 515 | url_enable_proxy("Using proxy: "); |
| 516 | } |
| 517 |
| --- src/url.c | |
| +++ src/url.c | |
| @@ -113,11 +113,11 @@ | |
| 113 | UrlData *pUrlData |
| 114 | ){ |
| 115 | int i, j, c; |
| 116 | char *zFile = 0; |
| 117 | |
| 118 | memset(pUrlData, 0, sizeof(*pUrlData)); |
| 119 | if( urlFlags & URL_USE_CONFIG ){ |
| 120 | if( zUrl==0 || strcmp(zUrl,"default")==0 ){ |
| 121 | const char *zPwConfig = "last-sync-pw"; |
| 122 | if( urlFlags & URL_USE_PARENT ){ |
| 123 | zUrl = db_get("parent-project-url", 0); |
| @@ -162,12 +162,10 @@ | |
| 162 | int iStart; |
| 163 | char *zLogin; |
| 164 | char *zExe; |
| 165 | char cQuerySep = '?'; |
| 166 | |
| 167 | if( zUrl[4]=='s' ){ |
| 168 | pUrlData->isHttps = 1; |
| 169 | pUrlData->protocol = "https"; |
| 170 | pUrlData->dfltPort = 443; |
| 171 | iStart = 8; |
| @@ -458,10 +456,36 @@ | |
| 456 | ** g.url.pwConfig is NULL. |
| 457 | */ |
| 458 | void url_parse(const char *zUrl, unsigned int urlFlags){ |
| 459 | url_parse_local(zUrl, urlFlags, &g.url); |
| 460 | } |
| 461 | |
| 462 | /* |
| 463 | ** Print the content of g.url |
| 464 | */ |
| 465 | void urlparse_print(int showPw){ |
| 466 | fossil_print("g.url.isFile = %d\n", g.url.isFile); |
| 467 | fossil_print("g.url.isHttps = %d\n", g.url.isHttps); |
| 468 | fossil_print("g.url.isSsh = %d\n", g.url.isSsh); |
| 469 | fossil_print("g.url.protocol = %s\n", g.url.protocol); |
| 470 | fossil_print("g.url.name = %s\n", g.url.name); |
| 471 | fossil_print("g.url.port = %d\n", g.url.port); |
| 472 | fossil_print("g.url.dfltPort = %d\n", g.url.dfltPort); |
| 473 | fossil_print("g.url.hostname = %s\n", g.url.hostname); |
| 474 | fossil_print("g.url.path = %s\n", g.url.path); |
| 475 | fossil_print("g.url.user = %s\n", g.url.user); |
| 476 | if( showPw || g.url.pwConfig==0 ){ |
| 477 | fossil_print("g.url.passwd = %s\n", g.url.passwd); |
| 478 | }else{ |
| 479 | fossil_print("g.url.passwd = ************\n"); |
| 480 | } |
| 481 | fossil_print("g.url.pwConfig = %s\n", g.url.pwConfig); |
| 482 | fossil_print("g.url.canonical = %s\n", g.url.canonical); |
| 483 | fossil_print("g.url.fossil = %s\n", g.url.fossil); |
| 484 | fossil_print("g.url.flags = 0x%04x\n", g.url.flags); |
| 485 | fossil_print("url_full(g.url) = %z\n", url_full(&g.url)); |
| 486 | } |
| 487 | |
| 488 | /* |
| 489 | ** COMMAND: test-urlparser |
| 490 | ** |
| 491 | ** Usage: %fossil test-urlparser URL ?options? |
| @@ -487,30 +511,11 @@ | |
| 511 | if( g.argc!=3 && g.argc!=4 ){ |
| 512 | usage("URL"); |
| 513 | } |
| 514 | url_parse(g.argv[2], fg); |
| 515 | for(i=0; i<2; i++){ |
| 516 | urlparse_print(showPw); |
| 517 | if( g.url.isFile || g.url.isSsh ) break; |
| 518 | if( i==0 ){ |
| 519 | fossil_print("********\n"); |
| 520 | url_enable_proxy("Using proxy: "); |
| 521 | } |
| 522 |