summaryrefslogtreecommitdiff
path: root/network_io/os2
diff options
context:
space:
mode:
authorbjh <bjh@13f79535-47bb-0310-9956-ffa450edef68>2006-01-05 03:05:54 +0000
committerbjh <bjh@13f79535-47bb-0310-9956-ffa450edef68>2006-01-05 03:05:54 +0000
commitadbef0ae95468d2413ed1c370b3432ca747fb1e3 (patch)
treeee82d8e72fcd9dfb4fb32853737abe57a159b624 /network_io/os2
parentc9ac6cd5b14b2b86010b16a5d1e6b52f080da8dd (diff)
downloadlibapr-adbef0ae95468d2413ed1c370b3432ca747fb1e3.tar.gz
The OS/2 send() function returns EINVAL if the data size is > 64k so limit the
send size to 64k. As any call to apr_socket_send() must handle partial sends anyway, this will be treated just like any other partial send. This was occurring when svnserve was sending a large file. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@366063 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'network_io/os2')
-rw-r--r--network_io/os2/sendrecv.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/network_io/os2/sendrecv.c b/network_io/os2/sendrecv.c
index a762b7dc3..42c057d40 100644
--- a/network_io/os2/sendrecv.c
+++ b/network_io/os2/sendrecv.c
@@ -27,6 +27,10 @@ APR_DECLARE(apr_status_t) apr_socket_send(apr_socket_t *sock, const char *buf,
apr_ssize_t rv;
int fds, err = 0;
+ if (*len > 65536) {
+ *len = 65536;
+ }
+
do {
if (!sock->nonblock || err == SOCEWOULDBLOCK) {
fds = sock->socketdes;