@@ -23,10 +23,83 @@
23 23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
24 24 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This file contains code to implement the file transfer protocol.
25 25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
26 26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include "config.h"
27 27 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include "xfer.h"
28 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Try to locate a record that is similar to rid and is a likely
31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** candidate for delta against rid. The similar record must be
32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** referenced in the onremote table.
33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return the integer record ID of the similar record. Or return
35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0 if none is found.
36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int similar_record(int rid, int traceFlag){
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int inCnt, outCnt;
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Stmt q;
40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int queue[100];
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(&q,
43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT srcid, EXISTS(SELECT 1 FROM onremote WHERE rid=srcid)"
44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " FROM delta"
45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE rid=:x"
46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " UNION ALL "
47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT rid, EXISTS(SELECT 1 FROM onremote WHERE rid=delta.rid)"
48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " FROM delta"
49 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE srcid=:x"
50 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ queue[0] = rid;
52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ inCnt = 1;
53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ outCnt = 0;
54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( outCnt<inCnt ){
55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int xid = queue[outCnt%64];
56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ outCnt++;
57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_bind_int(&q, ":x", xid);
58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( traceFlag ) printf("xid=%d\n", xid);
59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( db_step(&q)==SQLITE_ROW ){
60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nid = db_column_int(&q, 0);
61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int hit = db_column_int(&q, 1);
62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( traceFlag ) printf("nid=%d hit=%d\n", nid, hit);
63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( hit ){
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_finalize(&q);
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return nid;
66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( inCnt<sizeof(queue)/sizeof(queue[0]) ){
68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<inCnt && queue[i]!=nid; i++){}
70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( i>=inCnt ){
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ queue[inCnt++] = nid;
72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_reset(&q);
76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_finalize(&q);
78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** COMMAND: test-similar-record
83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void test_similar_record(void){
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( g.argc<4 ){
87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ usage("SRC ONREMOTE...");
88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_must_be_within_tree();
90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec(
91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "CREATE TEMP TABLE onremote(rid INTEGER PRIMARY KEY);"
92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=3; i<g.argc; i++){
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rid = name_to_rid(g.argv[i]);
95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("%s -> %d\n", g.argv[i], rid);
96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("INSERT INTO onremote VALUES(%d)", rid);
97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("similar: %d\n", similar_record(name_to_rid(g.argv[2]), 1));
99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
28 101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
29 102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
30 103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The aToken[0..nToken-1] blob array is a parse of a "file" line
31 104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** message. This routine finishes parsing that message and does
32 105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a record insert of the file.
@@ -87,43 +160,50 @@
87 160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to pOut. Otherwise, append the text to the CGI output.
88 161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
89 162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int send_file(int rid, Blob *pOut){
90 163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob content, uuid;
91 164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int size;
92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SELECT srcid FROM delta
95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- WHERE rid=%d
96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- AND EXISTS(SELECT 1 FROM onremote WHERE rid=srcid)
97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- UNION ALL
98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SELECT id FROM delta
99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- WHERE srcid=%d
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- AND EXISTS(SELECT 1 FROM onremote WHERE rid=delta.rid)
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- LIMIT 1
102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* TODO:
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Check for related files in the onremote TEMP table. If related
106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** files are found, then send a delta rather than the whole file.
107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int srcid;
166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
108 167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
109 168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&uuid);
110 169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_blob(&uuid, "SELECT uuid FROM blob WHERE rid=%d AND size>=0", rid);
111 170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( blob_size(&uuid)==0 ){
112 171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
113 172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114 173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
content_get(rid, &content);
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- size = blob_size(&content);
116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOut ){
117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(pOut, "file %b %d\n", &uuid, size);
118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_append(pOut, blob_buffer(&content), size);
174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ srcid = similar_record(rid, 0);
176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( srcid ){
177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob src, delta;
178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob srcuuid;
179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content_get(srcid, &src);
180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_delta_create(&src, &content, &delta);
181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&src);
182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&content);
183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&srcuuid);
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_blob(&srcuuid, "SELECT uuid FROM blob WHERE rid=%d", srcid);
185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size = blob_size(&delta);
186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOut ){
187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "file %b %b %d\n", &uuid, &srcuuid, size);
188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pOut, blob_buffer(&delta), size);
189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("file %b %b %d\n", &uuid, &srcuuid, size);
191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_append_content(blob_buffer(&delta), size);
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
119 193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf("file %b %d\n", &uuid, size);
121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_append_content(blob_buffer(&content), size);
194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size = blob_size(&content);
195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOut ){
196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "file %b %d\n", &uuid, size);
197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pOut, blob_buffer(&content), size);
198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("file %b %d\n", &uuid, size);
200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_append_content(blob_buffer(&content), size);
201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&content);
203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&uuid);
122 204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_reset(&content);
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_reset(&uuid);
125 205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("INSERT OR IGNORE INTO onremote VALUES(%d)", rid);
126 206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return size;
127 207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
128 208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
129 209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -134,33 +214,11 @@
134 214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRidSent = 0;
135 215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int sent = 0;
136 216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nSent = 0;
137 217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int maxSize = db_get_int("http-msg-size", 500000);
138 218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q;
139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0
140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_multi_exec(
141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "CREATE TEMP TABLE priority(rid INTEGER PRIMARY KEY);"
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "INSERT INTO priority"
143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " SELECT srcid FROM delta"
144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " WHERE EXISTS(SELECT 1 FROM onremote WHERE onremote.rid=delta.rid)"
145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND EXISTS(SELECT 1 FROM pending WHERE delta.srcid=pending.rid);"
146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "INSERT OR IGNORE INTO priority"
147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " SELECT rid FROM delta"
148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " WHERE EXISTS(SELECT 1 FROM onremote WHERE onremote.rid=delta.srcid)"
149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND EXISTS(SELECT 1 FROM pending WHERE delta.rid=pending.rid);"
150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( sent<maxSize && (rid = db_int(0, "SELECT rid FROM priority"))!=0 ){
152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sent += send_file(rid, pOut);
153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_multi_exec(
154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "INSERT OR IGNORE INTO priority"
155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " SELECT srcid FROM delta WHERE rid=%d"
156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " UNION ALL"
157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " SELECT rid FROM delta WHERE srcid=%d",
158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rid, rid
159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
162 220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q, "SELECT rid FROM pending ORDER BY rid");
163 221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( db_step(&q)==SQLITE_ROW ){
164 222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rid = db_column_int(&q, 0);
165 223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sent<maxSize ){
166 224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sent += send_file(rid, pOut);
@@ -186,13 +244,10 @@
186 244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
187 245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nSent>0 ){
188 246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("DELETE FROM pending WHERE rid <= %d", iRidSent);
189 247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
190 248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_multi_exec("DROP TABLE priority");
193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
194 249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return nSent;
195 250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
196 251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
197 252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
198 253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -592,12 +647,12 @@
592 647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
593 648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
594 649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
595 650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
596 651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Exchange messages with the server */
597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- printf("Send: %d files, %d requests, %d other messages\n",
598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nFile, nReq, nMsg);
652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("Send: %3d files, %3d requests, %3d other msgs, %8d bytes\n",
653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nFile, nReq, nMsg, blob_size(&send));
599 654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nFileSend = nFile;
600 655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nFile = nReq = nMsg = 0;
601 656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
http_exchange(&send, &recv);
602 657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&send);
603 658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -704,13 +759,13 @@
704 759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( blob_size(&errmsg) ){
705 760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_fatal("%b", &errmsg);
706 761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
707 762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blobarray_reset(aToken, nToken);
708 763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("Received: %3d files, %3d requests, %3d other msgs, %8d bytes\n",
765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nFile, nReq, nMsg, blob_size(&recv));
709 766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&recv);
710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- printf("Received: %d files, %d requests, %d other messages\n",
711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nFile, nReq, nMsg);
712 767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nFileSend + nFile==0 ){
713 768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nNoFileCycle++;
714 769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nNoFileCycle>1 ){
715 770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
go = 0;
716 771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
717 772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!