Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch clientSyncLeakFix Excluding Merge-Ins
This is equivalent to a diff from 0b61e3c0 to 7611406f
2012-01-24
| ||
13:28 | Fix several blob leaks that can lead to out of memory conditions for very large push operations. Revise the order of error messages so that simple HTTP timeout produces a better diagnostic. The HTTP trace files need to be opened in binary mode. ... (check-in: 1e398088 user: mistachkin tags: trunk) | |
2012-01-22
| ||
06:52 | Make sure that autosetup ends up defining FOSSIL_ENABLE_TCL in the Makefile when necessary. ... (check-in: 21555be3 user: mistachkin tags: trunk) | |
2012-01-20
| ||
17:32 | The HTTP trace files need to be opened in binary mode. ... (Closed-Leaf check-in: 7611406f user: mistachkin tags: clientSyncLeakFix) | |
17:16 | Revise the order of error messages so that simple HTTP timeout produces a better diagnostic. ... (check-in: dd71069b user: mistachkin tags: clientSyncLeakFix) | |
15:22 | Fix several blob leaks that can lead to out of memory conditions for very large push operations. ... (check-in: 81c685e0 user: mistachkin tags: clientSyncLeakFix) | |
2012-01-18
| ||
13:22 | Merge trunk changes into the retro-sbsdiff branch. ... (check-in: 6daee94f user: drh tags: retro-sbsdiff) | |
13:21 | Add the ability to run TH1 scripts before and after each xfer request. ... (check-in: 0b61e3c0 user: drh tags: trunk) | |
12:56 | Add xfersetup to the makemake.tcl script. ... (Closed-Leaf check-in: 9441f6fb user: mistachkin tags: pushScript) | |
12:47 | Correct casing typos. ... (check-in: 0c042ce7 user: mistachkin tags: trunk) | |
Changes to src/http.c.
︙ | ︙ | |||
172 173 174 175 176 177 178 | */ if( g.fHttpTrace ){ static int traceCnt = 0; char *zOutFile; FILE *out; traceCnt++; zOutFile = mprintf("http-request-%d.txt", traceCnt); | | | | 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | */ if( g.fHttpTrace ){ static int traceCnt = 0; char *zOutFile; FILE *out; traceCnt++; zOutFile = mprintf("http-request-%d.txt", traceCnt); out = fopen(zOutFile, "wb"); if( out ){ fwrite(blob_buffer(&hdr), 1, blob_size(&hdr), out); fwrite(blob_buffer(&payload), 1, blob_size(&payload), out); fclose(out); } free(zOutFile); zOutFile = mprintf("http-reply-%d.txt", traceCnt); out = fopen(zOutFile, "wb"); transport_log(out); free(zOutFile); } /* ** Send the request to the server. */ |
︙ | ︙ | |||
251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 | "application/x-fossil-uncompressed", -1)==0 ){ isCompressed = 0; }else if( fossil_strnicmp(&zLine[14], "application/x-fossil", -1)!=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 */ | > > > > < < < < | 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 | "application/x-fossil-uncompressed", -1)==0 ){ isCompressed = 0; }else if( fossil_strnicmp(&zLine[14], "application/x-fossil", -1)!=0 ){ isError = 1; } } } if( iLength<0 ){ fossil_fatal("server did not reply"); goto write_err; } if( rc!=200 ){ fossil_warning("\"location:\" missing from 302 redirect reply"); goto write_err; } /* ** Extract the reply payload that follows the header */ blob_zero(pReply); blob_resize(pReply, iLength); iLength = transport_receive(blob_buffer(pReply), iLength); blob_resize(pReply, iLength); if( isError ){ char *z; int i, j; |
︙ | ︙ |
Changes to src/xfer.c.
︙ | ︙ | |||
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | return; } blob_zero(&content); blob_zero(&hash); blob_extract(pXfer->pIn, n, &content); if( !cloneFlag && uuid_is_shunned(blob_str(&pXfer->aToken[1])) ){ /* Ignore files that have been shunned */ return; } if( isPriv && !g.perm.Private ){ /* Do not accept private files if not authorized */ return; } if( cloneFlag ){ if( pXfer->nToken==4 ){ srcid = rid_from_uuid(&pXfer->aToken[2], 1, isPriv); pXfer->nDeltaRcvd++; }else{ | > > | 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | return; } blob_zero(&content); blob_zero(&hash); blob_extract(pXfer->pIn, n, &content); if( !cloneFlag && uuid_is_shunned(blob_str(&pXfer->aToken[1])) ){ /* Ignore files that have been shunned */ blob_reset(&content); return; } if( isPriv && !g.perm.Private ){ /* Do not accept private files if not authorized */ blob_reset(&content); return; } if( cloneFlag ){ if( pXfer->nToken==4 ){ srcid = rid_from_uuid(&pXfer->aToken[2], 1, isPriv); pXfer->nDeltaRcvd++; }else{ |
︙ | ︙ | |||
154 155 156 157 158 159 160 161 162 163 164 165 166 167 | srcid = rid_from_uuid(&pXfer->aToken[2], 1, isPriv); if( content_get(srcid, &src)==0 ){ rid = content_put_ex(&content, blob_str(&pXfer->aToken[1]), srcid, 0, isPriv); pXfer->nDanglingFile++; db_multi_exec("DELETE FROM phantom WHERE rid=%d", rid); if( !isPriv ) content_make_public(rid); return; } pXfer->nDeltaRcvd++; blob_delta_apply(&src, &content, &next); blob_reset(&src); blob_reset(&content); content = next; | > > | 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | srcid = rid_from_uuid(&pXfer->aToken[2], 1, isPriv); if( content_get(srcid, &src)==0 ){ rid = content_put_ex(&content, blob_str(&pXfer->aToken[1]), srcid, 0, isPriv); pXfer->nDanglingFile++; db_multi_exec("DELETE FROM phantom WHERE rid=%d", rid); if( !isPriv ) content_make_public(rid); blob_reset(&src); blob_reset(&content); return; } pXfer->nDeltaRcvd++; blob_delta_apply(&src, &content, &next); blob_reset(&src); blob_reset(&content); content = next; |
︙ | ︙ | |||
233 234 235 236 237 238 239 240 241 242 243 244 245 246 | /* Do not accept private files if not authorized */ return; } blob_zero(&content); blob_extract(pXfer->pIn, szC, &content); if( uuid_is_shunned(blob_str(&pXfer->aToken[1])) ){ /* Ignore files that have been shunned */ return; } if( pXfer->nToken==5 ){ srcid = rid_from_uuid(&pXfer->aToken[2], 1, isPriv); pXfer->nDeltaRcvd++; }else{ srcid = 0; | > | 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 | /* Do not accept private files if not authorized */ return; } blob_zero(&content); blob_extract(pXfer->pIn, szC, &content); if( uuid_is_shunned(blob_str(&pXfer->aToken[1])) ){ /* Ignore files that have been shunned */ blob_reset(&content); return; } if( pXfer->nToken==5 ){ srcid = rid_from_uuid(&pXfer->aToken[2], 1, isPriv); pXfer->nDeltaRcvd++; }else{ srcid = 0; |
︙ | ︙ | |||
418 419 420 421 422 423 424 425 426 427 428 429 430 431 | if( isPriv ) blob_append(pXfer->pOut, "private\n", -1); blob_appendf(pXfer->pOut, "file %b %d\n", pUuid, size); blob_append(pXfer->pOut, blob_buffer(&content), size); pXfer->nFileSent++; }else{ pXfer->nDeltaSent++; } } remote_has(rid); blob_reset(&uuid); #if 0 if( blob_buffer(pXfer->pOut)[blob_size(pXfer->pOut)-1]!='\n' ){ blob_appendf(pXfer->pOut, "\n", 1); } | > | 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 | if( isPriv ) blob_append(pXfer->pOut, "private\n", -1); blob_appendf(pXfer->pOut, "file %b %d\n", pUuid, size); blob_append(pXfer->pOut, blob_buffer(&content), size); pXfer->nFileSent++; }else{ pXfer->nDeltaSent++; } blob_reset(&content); } remote_has(rid); blob_reset(&uuid); #if 0 if( blob_buffer(pXfer->pOut)[blob_size(pXfer->pOut)-1]!='\n' ){ blob_appendf(pXfer->pOut, "\n", 1); } |
︙ | ︙ |