Author: mturk
Date: Tue Feb  7 07:24:06 2006
New Revision: 375626

URL: http://svn.apache.org/viewcvs?rev=375626&view=rev
Log:
Make sure that all the bytes are send when
calling sendbb. Since APR might return partial
writes, add a loop that will resolve that.

Modified:
    tomcat/connectors/trunk/jni/native/src/network.c

Modified: tomcat/connectors/trunk/jni/native/src/network.c
URL: 
http://svn.apache.org/viewcvs/tomcat/connectors/trunk/jni/native/src/network.c?rev=375626&r1=375625&r2=375626&view=diff
==============================================================================
--- tomcat/connectors/trunk/jni/native/src/network.c (original)
+++ tomcat/connectors/trunk/jni/native/src/network.c Tue Feb  7 07:24:06 2006
@@ -280,7 +280,7 @@
     GET_S_FAMILY(f, family);
     GET_S_TYPE(t, type);
 
-    if (family >= 0) { 
+    if (family >= 0) {
         TCN_THROW_IF_ERR(apr_socket_create(&s,
                          f, t, protocol, p), a);
     }
@@ -592,6 +592,7 @@
 {
     tcn_socket_t *s = J2P(sock, tcn_socket_t *);
     apr_size_t nbytes = (apr_size_t)len;
+    apr_size_t sent = 0;
     apr_status_t ss;
 
     UNREFERENCED_STDARGS;
@@ -605,10 +606,15 @@
     sp_num_send++;
 #endif
 
-    ss = (*s->net->send)(s->opaque, s->jsbbuff + offset, &nbytes);
-
+    while (sent < nbytes) {
+       apr_size_t wr = nbytes - sent;
+       ss = (*s->net->send)(s->opaque, s->jsbbuff + offset + sent, &wr);
+       if (ss != APR_SUCCESS)
+           break;
+       sent += wr;
+    }
     if (ss == APR_SUCCESS)
-        return (jint)nbytes;
+        return (jint)sent;
     else {
         TCN_ERROR_WRAP(ss);
         return -(jint)ss;



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to