Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Adjust the xfer handler to go another round if any igot cards were sent in response to a gimme for a private artifact. |
|---|---|
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
71b6ada40fdef0b3a894a1b60b0685b5 |
| User & Date: | drh 2020-04-13 14:22:24.941 |
Context
|
2020-04-13
| ||
| 14:32 | For the rcvids shown on the /bloblist page, provide hyperlinks. check-in: 10c90175a7 user: drh tags: trunk | |
| 14:22 | Adjust the xfer handler to go another round if any igot cards were sent in response to a gimme for a private artifact. check-in: 71b6ada40f user: drh tags: trunk | |
| 14:07 | Show RCVID values to administrators on the /bloblist page. check-in: a0faf128db user: drh tags: trunk | |
Changes
Changes to src/xfer.c.
| ︙ | ︙ | |||
37 38 39 40 41 42 43 44 45 46 47 48 49 50 | Blob *pIn; /* Input text from the other side */ Blob *pOut; /* Compose our reply here */ Blob line; /* The current line of input */ Blob aToken[6]; /* Tokenized version of line */ Blob err; /* Error message text */ int nToken; /* Number of tokens in line */ int nIGotSent; /* Number of "igot" cards sent */ int nGimmeSent; /* Number of gimme cards sent */ int nFileSent; /* Number of files sent */ int nDeltaSent; /* Number of deltas sent */ int nFileRcvd; /* Number of files received */ int nDeltaRcvd; /* Number of deltas received */ int nDanglingFile; /* Number of dangling deltas received */ int mxSend; /* Stop sending "file" when pOut reaches this size */ | > | 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | Blob *pIn; /* Input text from the other side */ Blob *pOut; /* Compose our reply here */ Blob line; /* The current line of input */ Blob aToken[6]; /* Tokenized version of line */ Blob err; /* Error message text */ int nToken; /* Number of tokens in line */ int nIGotSent; /* Number of "igot" cards sent */ int nPrivIGot; /* Number of private "igot" cards */ int nGimmeSent; /* Number of gimme cards sent */ int nFileSent; /* Number of files sent */ int nDeltaSent; /* Number of deltas sent */ int nFileRcvd; /* Number of files received */ int nDeltaRcvd; /* Number of deltas received */ int nDanglingFile; /* Number of dangling deltas received */ int mxSend; /* Stop sending "file" when pOut reaches this size */ |
| ︙ | ︙ | |||
556 557 558 559 560 561 562 563 564 565 566 567 568 569 |
if( pXfer->remoteDate>=20200413 ){
/* If the artifact is private and we are not doing a private sync,
** at least tell the other side that the artifact exists and is
** known to be private. But only do this for newer clients since
** older ones will throw an error if they get a private igot card
** and private syncing is disallowed */
blob_appendf(pXfer->pOut, "igot %b 1\n", pUuid);
}
return;
}
if( (pXfer->maxTime != -1 && time(NULL) >= pXfer->maxTime) ||
pXfer->mxSend<=blob_size(pXfer->pOut) ){
const char *zFormat = isPriv ? "igot %b 1\n" : "igot %b\n";
blob_appendf(pXfer->pOut, zFormat /*works-like:"%b"*/, pUuid);
| > > | 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 |
if( pXfer->remoteDate>=20200413 ){
/* If the artifact is private and we are not doing a private sync,
** at least tell the other side that the artifact exists and is
** known to be private. But only do this for newer clients since
** older ones will throw an error if they get a private igot card
** and private syncing is disallowed */
blob_appendf(pXfer->pOut, "igot %b 1\n", pUuid);
pXfer->nIGotSent++;
pXfer->nPrivIGot++;
}
return;
}
if( (pXfer->maxTime != -1 && time(NULL) >= pXfer->maxTime) ||
pXfer->mxSend<=blob_size(pXfer->pOut) ){
const char *zFormat = isPriv ? "igot %b 1\n" : "igot %b\n";
blob_appendf(pXfer->pOut, zFormat /*works-like:"%b"*/, pUuid);
|
| ︙ | ︙ | |||
2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 |
}
nCardSent = 0;
nCardRcvd = 0;
xfer.nFileSent = 0;
xfer.nDeltaSent = 0;
xfer.nGimmeSent = 0;
xfer.nIGotSent = 0;
lastPctDone = -1;
blob_reset(&send);
blob_appendf(&send, "pragma client-version %d %d %d\n",
RELEASE_VERSION_NUMBER, MANIFEST_NUMERIC_DATE,
MANIFEST_NUMERIC_TIME);
rArrivalTime = db_double(0.0, "SELECT julianday('now')");
| > | 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 |
}
nCardSent = 0;
nCardRcvd = 0;
xfer.nFileSent = 0;
xfer.nDeltaSent = 0;
xfer.nGimmeSent = 0;
xfer.nIGotSent = 0;
xfer.nPrivIGot = 0;
lastPctDone = -1;
blob_reset(&send);
blob_appendf(&send, "pragma client-version %d %d %d\n",
RELEASE_VERSION_NUMBER, MANIFEST_NUMERIC_DATE,
MANIFEST_NUMERIC_TIME);
rArrivalTime = db_double(0.0, "SELECT julianday('now')");
|
| ︙ | ︙ | |||
2568 2569 2570 2571 2572 2573 2574 |
xfer.nFileRcvd = 0;
xfer.nDeltaRcvd = 0;
xfer.nDanglingFile = 0;
/* If we have one or more files queued to send, then go
** another round
*/
| | | 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 |
xfer.nFileRcvd = 0;
xfer.nDeltaRcvd = 0;
xfer.nDanglingFile = 0;
/* If we have one or more files queued to send, then go
** another round
*/
if( xfer.nFileSent+xfer.nDeltaSent>0 || uvDoPush || xfer.nPrivIGot>0 ){
go = 1;
}
/* If this is a clone, the go at least two rounds */
if( (syncFlags & SYNC_CLONE)!=0 && nCycle==1 ) go = 1;
/* Stop the cycle if the server sends a "clone_seqno 0" card and
|
| ︙ | ︙ |