Author: markt
Date: Wed Jun 5 19:03:07 2013
New Revision: 1490006
URL: http://svn.apache.org/r1490006
Log:
Make sockets usable for non-blocking IO. Return bytes written if >0 and error
code is EAGAIN rather than the error code so the clients know how many bytes
were written.
Modified:
tomcat/native/trunk/native/src/network.c
Modified: tomcat/native/trunk/native/src/network.c
URL:
http://svn.apache.org/viewvc/tomcat/native/trunk/native/src/network.c?rev=1490006&r1=1490005&r2=1490006&view=diff
==============================================================================
--- tomcat/native/trunk/native/src/network.c (original)
+++ tomcat/native/trunk/native/src/network.c Wed Jun 5 19:03:07 2013
@@ -461,7 +461,7 @@ TCN_IMPLEMENT_CALL(jint, Socket, send)(T
ss = (*s->net->send)(s->opaque, (const char *)sb, &nbytes);
free(sb);
}
- if (ss == APR_SUCCESS)
+ if (ss == APR_SUCCESS || ((APR_STATUS_IS_EAGAIN(ss) || ss == TCN_EAGAIN)
&& nbytes > 0))
return (jint)nbytes;
else {
TCN_ERROR_WRAP(ss);
@@ -534,7 +534,7 @@ TCN_IMPLEMENT_CALL(jint, Socket, sendb)(
sent += wr;
}
- if (ss == APR_SUCCESS)
+ if (ss == APR_SUCCESS || ((APR_STATUS_IS_EAGAIN(ss) || ss == TCN_EAGAIN)
&& sent > 0))
return (jint)sent;
else {
TCN_ERROR_WRAP(ss);
@@ -568,7 +568,7 @@ TCN_IMPLEMENT_CALL(jint, Socket, sendib)
ss = (*s->net->send)(s->opaque, bytes + offset, &nbytes);
- if (ss == APR_SUCCESS)
+ if (ss == APR_SUCCESS || ((APR_STATUS_IS_EAGAIN(ss) || ss == TCN_EAGAIN)
&& nbytes > 0))
return (jint)nbytes;
else {
TCN_ERROR_WRAP(ss);
@@ -605,7 +605,7 @@ TCN_IMPLEMENT_CALL(jint, Socket, sendbb)
break;
sent += wr;
}
- if (ss == APR_SUCCESS)
+ if (ss == APR_SUCCESS || ((APR_STATUS_IS_EAGAIN(ss) || ss == TCN_EAGAIN)
&& sent > 0))
return (jint)sent;
else {
TCN_ERROR_WRAP(ss);
@@ -636,7 +636,7 @@ TCN_IMPLEMENT_CALL(jint, Socket, sendibb
ss = (*s->net->send)(s->opaque, s->jsbbuff + offset, &nbytes);
- if (ss == APR_SUCCESS)
+ if (ss == APR_SUCCESS || ((APR_STATUS_IS_EAGAIN(ss) || ss == TCN_EAGAIN)
&& nbytes > 0))
return (jint)nbytes;
else {
TCN_ERROR_WRAP(ss);
@@ -674,7 +674,7 @@ TCN_IMPLEMENT_CALL(jint, Socket, sendv)(
for (i = 0; i < nvec; i++) {
(*e)->ReleaseByteArrayElements(e, ba[i], vec[i].iov_base, JNI_ABORT);
}
- if (ss == APR_SUCCESS)
+ if (ss == APR_SUCCESS || ((APR_STATUS_IS_EAGAIN(ss) || ss == TCN_EAGAIN)
&& written > 0))
return (jint)written;
else {
TCN_ERROR_WRAP(ss);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]