Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Work toward getting and "update" or "commit" to continue even after an auto-sync failure. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
9286aaf778c612745fa0804c4fdf8290 |
| User & Date: | drh 2010-11-19 19:48:19.000 |
Context
|
2010-11-19
| ||
| 22:29 | Further work on getting a "commit" or "update" to continue operating after an autosync failure. The "commit" command prompts to verify that you want to continue. ... (check-in: 0cc4875fde user: drh tags: trunk) | |
| 19:48 | Work toward getting and "update" or "commit" to continue even after an auto-sync failure. ... (check-in: 9286aaf778 user: drh tags: trunk) | |
|
2010-11-17
| ||
| 20:11 | integrate import/export to Makefile.dmc ... (check-in: e5d99df4bc user: wolfgang tags: trunk) | |
Changes
Changes to src/http.c.
| ︙ | ︙ | |||
125 126 127 128 129 130 131 | ** in pRecv. pRecv is assumed to be uninitialized when ** this routine is called - this routine will initialize it. ** ** The server address is contain in the "g" global structure. The ** url_parse() routine should have been called prior to this routine ** in order to fill this structure appropriately. */ | | | > | 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
** in pRecv. pRecv is assumed to be uninitialized when
** this routine is called - this routine will initialize it.
**
** The server address is contain in the "g" global structure. The
** url_parse() routine should have been called prior to this routine
** in order to fill this structure appropriately.
*/
int http_exchange(Blob *pSend, Blob *pReply, int useLogin){
Blob login; /* The login card */
Blob payload; /* The complete payload including login card */
Blob hdr; /* The HTTP request header */
int closeConnection; /* True to close the connection when done */
int iLength; /* Length of the reply payload */
int rc; /* Result code */
int iHttpVersion; /* Which version of HTTP protocol server uses */
char *zLine; /* A single line of the reply header */
int i; /* Loop counter */
int isError = 0; /* True if the reply is an error message */
if( transport_open() ){
fossil_warning(transport_errmsg());
return 1;
}
/* Construct the login card and prepare the complete payload */
blob_zero(&login);
if( useLogin ) http_build_login_card(pSend, &login);
if( g.fHttpTrace ){
payload = login;
|
| ︙ | ︙ | |||
199 200 201 202 203 204 205 |
/* printf("[%s]\n", zLine); fflush(stdout); */
if( strncasecmp(zLine, "http/1.", 7)==0 ){
if( sscanf(zLine, "HTTP/1.%d %d", &iHttpVersion, &rc)!=2 ) goto write_err;
if( rc!=200 && rc!=302 ){
int ii;
for(ii=7; zLine[ii] && zLine[ii]!=' '; ii++){}
while( zLine[ii]==' ' ) ii++;
| | | 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
/* printf("[%s]\n", zLine); fflush(stdout); */
if( strncasecmp(zLine, "http/1.", 7)==0 ){
if( sscanf(zLine, "HTTP/1.%d %d", &iHttpVersion, &rc)!=2 ) goto write_err;
if( rc!=200 && rc!=302 ){
int ii;
for(ii=7; zLine[ii] && zLine[ii]!=' '; ii++){}
while( zLine[ii]==' ' ) ii++;
fossil_warning("server says: %s", &zLine[ii]);
goto write_err;
}
if( iHttpVersion==0 ){
closeConnection = 1;
}else{
closeConnection = 0;
}
|
| ︙ | ︙ | |||
231 232 233 234 235 236 237 |
while( j>4 && strcmp(&zLine[j-4],"/xfer")==0 ){
j -= 4;
zLine[j] = 0;
}
fossil_print("redirect to %s\n", &zLine[i]);
url_parse(&zLine[i]);
transport_close();
| | < | | 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
while( j>4 && strcmp(&zLine[j-4],"/xfer")==0 ){
j -= 4;
zLine[j] = 0;
}
fossil_print("redirect to %s\n", &zLine[i]);
url_parse(&zLine[i]);
transport_close();
return http_exchange(pSend, pReply, useLogin);
}else if( strncasecmp(zLine, "content-type: text/html", 23)==0 ){
isError = 1;
}
}
if( rc!=200 ){
fossil_warning("\"location:\" missing from 302 redirect reply");
goto write_err;
}
/*
** Extract the reply payload that follows the header
*/
if( iLength<0 ){
|
| ︙ | ︙ | |||
286 287 288 289 290 291 292 |
*/
closeConnection = 1; /* FIX ME */
if( closeConnection ){
transport_close();
}else{
transport_rewind();
}
| | | | 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 |
*/
closeConnection = 1; /* FIX ME */
if( closeConnection ){
transport_close();
}else{
transport_rewind();
}
return 0;
/*
** Jump to here if an error is seen.
*/
write_err:
transport_close();
return 1;
}
|
Changes to src/main.c.
| ︙ | ︙ | |||
320 321 322 323 324 325 326 |
z = vmprintf(zFormat, ap);
va_end(ap);
if( g.cgiOutput ){
g.cgiOutput = 0;
cgi_printf("<p class=\"generalError\">%h</p>", z);
cgi_reply();
}else{
| | | 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 |
z = vmprintf(zFormat, ap);
va_end(ap);
if( g.cgiOutput ){
g.cgiOutput = 0;
cgi_printf("<p class=\"generalError\">%h</p>", z);
cgi_reply();
}else{
fprintf(stderr, "\r%s: %s\n", fossil_nameofexe(), z);
}
db_force_rollback();
fossil_exit(1);
}
/* This routine works like fossil_fatal() except that if called
** recursively, the recursive call is a no-op.
|
| ︙ | ︙ | |||
348 349 350 351 352 353 354 |
z = vmprintf(zFormat, ap);
va_end(ap);
if( g.cgiOutput ){
g.cgiOutput = 0;
cgi_printf("<p class=\"generalError\">%h</p>", z);
cgi_reply();
}else{
| | | | 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 |
z = vmprintf(zFormat, ap);
va_end(ap);
if( g.cgiOutput ){
g.cgiOutput = 0;
cgi_printf("<p class=\"generalError\">%h</p>", z);
cgi_reply();
}else{
fprintf(stderr, "\r%s: %s\n", fossil_nameofexe(), z);
}
db_force_rollback();
fossil_exit(1);
}
/* Print a warning message */
void fossil_warning(const char *zFormat, ...){
char *z;
va_list ap;
va_start(ap, zFormat);
z = vmprintf(zFormat, ap);
va_end(ap);
if( g.cgiOutput ){
cgi_printf("<p class=\"generalError\">%h</p>", z);
}else{
fprintf(stderr, "\r%s: %s\n", fossil_nameofexe(), z);
}
}
/*
** Malloc and free routines that cannot fail
*/
void *fossil_malloc(size_t n){
|
| ︙ | ︙ |