Author: mturk
Date: Wed Feb  8 04:35:08 2006
New Revision: 375945

URL: http://svn.apache.org/viewcvs?rev=375945&view=rev
Log:
Use send loop for all send(b) calls.

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=375945&r1=375944&r2=375945&view=diff
==============================================================================
--- tomcat/connectors/trunk/jni/native/src/network.c (original)
+++ tomcat/connectors/trunk/jni/native/src/network.c Wed Feb  8 04:35:08 2006
@@ -562,6 +562,7 @@
 {
     tcn_socket_t *s = J2P(sock, tcn_socket_t *);
     apr_size_t nbytes = (apr_size_t)len;
+    apr_size_t sent = 0;
     char *bytes;
     apr_status_t ss;
 
@@ -577,10 +578,17 @@
 #endif
 
     bytes  = (char *)(*e)->GetDirectBufferAddress(e, buf);
-    ss = (*s->net->send)(s->opaque, bytes + offset, &nbytes);
+
+    while (sent < nbytes) {
+        apr_size_t wr = nbytes - sent;
+        ss = (*s->net->send)(s->opaque, bytes + 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;
@@ -607,11 +615,11 @@
 #endif
 
     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;
+        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)sent;



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

Reply via email to