Fossil SCM

Work around a networking problem on WinXP when transferring large files.

drh 2013-06-22 01:44 trunk
Commit 74eec78b3b856a9cce58a112a917cb4f7788e716
1 file changed +2 -1
--- src/http_socket.c
+++ src/http_socket.c
@@ -200,11 +200,12 @@
200200
*/
201201
size_t socket_receive(void *NotUsed, void *pContent, size_t N){
202202
ssize_t got;
203203
size_t total = 0;
204204
while( N>0 ){
205
- got = recv(iSocket, pContent, N, 0);
205
+ /* WinXP fails for large values of N. So limit it to 64KiB. */
206
+ got = recv(iSocket, pContent, N>65536 ? 65536 : N, 0);
206207
if( got<=0 ) break;
207208
total += (size_t)got;
208209
N -= (size_t)got;
209210
pContent = (void*)&((char*)pContent)[got];
210211
}
211212
--- src/http_socket.c
+++ src/http_socket.c
@@ -200,11 +200,12 @@
200 */
201 size_t socket_receive(void *NotUsed, void *pContent, size_t N){
202 ssize_t got;
203 size_t total = 0;
204 while( N>0 ){
205 got = recv(iSocket, pContent, N, 0);
 
206 if( got<=0 ) break;
207 total += (size_t)got;
208 N -= (size_t)got;
209 pContent = (void*)&((char*)pContent)[got];
210 }
211
--- src/http_socket.c
+++ src/http_socket.c
@@ -200,11 +200,12 @@
200 */
201 size_t socket_receive(void *NotUsed, void *pContent, size_t N){
202 ssize_t got;
203 size_t total = 0;
204 while( N>0 ){
205 /* WinXP fails for large values of N. So limit it to 64KiB. */
206 got = recv(iSocket, pContent, N>65536 ? 65536 : N, 0);
207 if( got<=0 ) break;
208 total += (size_t)got;
209 N -= (size_t)got;
210 pContent = (void*)&((char*)pContent)[got];
211 }
212

Keyboard Shortcuts

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