diff options
author | bjh <bjh@13f79535-47bb-0310-9956-ffa450edef68> | 2006-01-05 03:05:54 +0000 |
---|---|---|
committer | bjh <bjh@13f79535-47bb-0310-9956-ffa450edef68> | 2006-01-05 03:05:54 +0000 |
commit | adbef0ae95468d2413ed1c370b3432ca747fb1e3 (patch) | |
tree | ee82d8e72fcd9dfb4fb32853737abe57a159b624 /network_io | |
parent | c9ac6cd5b14b2b86010b16a5d1e6b52f080da8dd (diff) | |
download | libapr-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')
-rw-r--r-- | network_io/os2/sendrecv.c | 4 |
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; |