Fossil SCM
Work around a networking problem on WinXP when transferring large files.
Commit
74eec78b3b856a9cce58a112a917cb4f7788e716
Parent
c8253f4066cbc56…
1 file changed
+2
-1
+2
-1
| --- src/http_socket.c | ||
| +++ src/http_socket.c | ||
| @@ -200,11 +200,12 @@ | ||
| 200 | 200 | */ |
| 201 | 201 | size_t socket_receive(void *NotUsed, void *pContent, size_t N){ |
| 202 | 202 | ssize_t got; |
| 203 | 203 | size_t total = 0; |
| 204 | 204 | 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); | |
| 206 | 207 | if( got<=0 ) break; |
| 207 | 208 | total += (size_t)got; |
| 208 | 209 | N -= (size_t)got; |
| 209 | 210 | pContent = (void*)&((char*)pContent)[got]; |
| 210 | 211 | } |
| 211 | 212 |
| --- 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 |