Fossil SCM

Fix an issue with "clone" on the client side: the client was requesting multiple copies of artifacts for which it held a delta with a phantom source.

drh 2009-08-12 14:27 trunk
Commit 7646ee13e34f6aad3dec3787968b1c29d87ea6e5
1 file changed +2 -3
+2 -3
--- src/xfer.c
+++ src/xfer.c
@@ -125,14 +125,13 @@
125125
}
126126
if( pXfer->nToken==4 ){
127127
Blob src;
128128
srcid = rid_from_uuid(&pXfer->aToken[2], 1);
129129
if( content_get(srcid, &src)==0 ){
130
- content_put(&content, blob_str(&pXfer->aToken[1]), srcid);
131
- blob_appendf(pXfer->pOut, "gimme %b\n", &pXfer->aToken[2]);
132
- pXfer->nGimmeSent++;
130
+ rid = content_put(&content, blob_str(&pXfer->aToken[1]), srcid);
133131
pXfer->nDanglingFile++;
132
+ db_multi_exec("DELETE FROM phantom WHERE rid=%d", rid);
134133
return;
135134
}
136135
pXfer->nDeltaRcvd++;
137136
blob_delta_apply(&src, &content, &content);
138137
blob_reset(&src);
139138
--- src/xfer.c
+++ src/xfer.c
@@ -125,14 +125,13 @@
125 }
126 if( pXfer->nToken==4 ){
127 Blob src;
128 srcid = rid_from_uuid(&pXfer->aToken[2], 1);
129 if( content_get(srcid, &src)==0 ){
130 content_put(&content, blob_str(&pXfer->aToken[1]), srcid);
131 blob_appendf(pXfer->pOut, "gimme %b\n", &pXfer->aToken[2]);
132 pXfer->nGimmeSent++;
133 pXfer->nDanglingFile++;
 
134 return;
135 }
136 pXfer->nDeltaRcvd++;
137 blob_delta_apply(&src, &content, &content);
138 blob_reset(&src);
139
--- src/xfer.c
+++ src/xfer.c
@@ -125,14 +125,13 @@
125 }
126 if( pXfer->nToken==4 ){
127 Blob src;
128 srcid = rid_from_uuid(&pXfer->aToken[2], 1);
129 if( content_get(srcid, &src)==0 ){
130 rid = content_put(&content, blob_str(&pXfer->aToken[1]), srcid);
 
 
131 pXfer->nDanglingFile++;
132 db_multi_exec("DELETE FROM phantom WHERE rid=%d", rid);
133 return;
134 }
135 pXfer->nDeltaRcvd++;
136 blob_delta_apply(&src, &content, &content);
137 blob_reset(&src);
138

Keyboard Shortcuts

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