You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by mt...@apache.org on 2005/04/14 18:41:24 UTC

cvs commit: jakarta-tomcat-connectors/jni/native/src network.c

mturk       2005/04/14 09:41:24

  Modified:    jni/native/src network.c
  Log:
  Remove exceptions from recv and send. Returned error codes are
  negative values.
  
  Revision  Changes    Path
  1.5       +44 -25    jakarta-tomcat-connectors/jni/native/src/network.c
  
  Index: network.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/network.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- network.c	14 Apr 2005 06:47:56 -0000	1.4
  +++ network.c	14 Apr 2005 16:41:24 -0000	1.5
  @@ -179,6 +179,7 @@
       apr_size_t nbytes = (*e)->GetArrayLength(e, buf);
       jbyte *bytes;
       apr_int32_t nb;
  +    apr_status_t ss;
   
       UNREFERENCED(o);
       apr_socket_opt_get(s, APR_SO_NONBLOCK, &nb);
  @@ -188,14 +189,16 @@
            bytes = (*e)->GetPrimitiveArrayCritical(e, buf, NULL);
       else
            bytes = (*e)->GetByteArrayElements(e, buf, NULL);
  -    TCN_THROW_IF_ERR(apr_socket_send(s, bytes + offset, &nbytes), nbytes);
  +    ss = apr_socket_send(s, bytes + offset, &nbytes);
   
  -cleanup:
       if (nb)
           (*e)->ReleasePrimitiveArrayCritical(e, buf, bytes, JNI_ABORT);
       else
           (*e)->ReleaseByteArrayElements(e, buf, bytes, JNI_ABORT);
  -    return (jint)nbytes;
  +    if (ss == APR_SUCCESS)
  +        return (jint)nbytes;
  +    else
  +        return -(jint)ss;
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, sendb)(TCN_STDARGS, jlong sock,
  @@ -204,20 +207,23 @@
       apr_socket_t *s = J2P(sock, apr_socket_t *);
       apr_size_t nbytes;
       char *bytes;
  +    apr_status_t ss;
   
       UNREFERENCED(o);
       bytes  = (char *)(*e)->GetDirectBufferAddress(e, buf);
       nbytes = (apr_size_t)(*e)->GetDirectBufferCapacity(e, buf);
       if (bytes == NULL || nbytes < 0) {
           tcn_ThrowAPRException(e, APR_EGENERAL);
  -        goto cleanup;
  +        return (jint)(-APR_EGENERAL);
       }
       if (len > 0)
           nbytes = min(nbytes - offset, (apr_size_t)len);
  -    TCN_THROW_IF_ERR(apr_socket_send(s, bytes + offset, &nbytes), nbytes);
  +    ss = apr_socket_send(s, bytes + offset, &nbytes);
   
  -cleanup:
  -    return (jint)nbytes;
  +    if (ss == APR_SUCCESS)
  +        return (jint)nbytes;
  +    else
  +        return -(jint)ss;
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, sendv)(TCN_STDARGS, jlong sock,
  @@ -229,6 +235,7 @@
       struct iovec vec[APR_MAX_IOVEC_SIZE];
       jobject ba[APR_MAX_IOVEC_SIZE];
       apr_size_t written = 0;
  +    apr_status_t ss;
   
       UNREFERENCED(o);
   
  @@ -242,13 +249,15 @@
           vec[i].iov_base = (*e)->GetByteArrayElements(e, ba[i], NULL);
       }
   
  -    TCN_THROW_IF_ERR(apr_socket_sendv(s, vec, nvec, &written), i);
  +    ss = apr_socket_sendv(s, vec, nvec, &written);
   
  -cleanup:
       for (i = 0; i < nvec; i++) {
           (*e)->ReleaseByteArrayElements(e, ba[i], vec[i].iov_base, JNI_ABORT);
       }
  -    return (jint)written;
  +    if (ss == APR_SUCCESS)
  +        return (jint)written;
  +    else
  +        return -(jint)ss;
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, sendto)(TCN_STDARGS, jlong sock,
  @@ -260,6 +269,7 @@
       apr_size_t nbytes = (*e)->GetArrayLength(e, buf);
       jbyte *bytes = (*e)->GetByteArrayElements(e, buf, NULL);
       apr_int32_t nb;
  +    apr_status_t ss;
   
       UNREFERENCED(o);
       apr_socket_opt_get(s, APR_SO_NONBLOCK, &nb);
  @@ -269,14 +279,16 @@
            bytes = (*e)->GetPrimitiveArrayCritical(e, buf, NULL);
       else
            bytes = (*e)->GetByteArrayElements(e, buf, NULL);
  -    TCN_THROW_IF_ERR(apr_socket_sendto(s, w, flag, bytes + offset, &nbytes), nbytes);
  +    ss = apr_socket_sendto(s, w, flag, bytes + offset, &nbytes);
   
  -cleanup:
       if (nb)
           (*e)->ReleasePrimitiveArrayCritical(e, buf, bytes, 0);
       else
           (*e)->ReleaseByteArrayElements(e, buf, bytes, JNI_ABORT);
  -    return (jint)nbytes;
  +    if (ss == APR_SUCCESS)
  +        return (jint)nbytes;
  +    else
  +        return -(jint)ss;
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, recv)(TCN_STDARGS, jlong sock,
  @@ -285,24 +297,27 @@
       apr_socket_t *s = J2P(sock, apr_socket_t *);
       apr_size_t nbytes = (*e)->GetArrayLength(e, buf);
       jbyte *bytes = (*e)->GetByteArrayElements(e, buf, NULL);
  +    apr_status_t ss;
   
       UNREFERENCED(o);
       if (toread > 0)
           nbytes = min(nbytes - offset, (apr_size_t)toread);
   
  -    TCN_THROW_IF_ERR(apr_socket_recv(s, bytes + offset, &nbytes), nbytes);
  +    ss = apr_socket_recv(s, bytes + offset, &nbytes);
   
  -cleanup:
       (*e)->ReleaseByteArrayElements(e, buf, bytes,
                                      nbytes ? 0 : JNI_ABORT);
  -    return (jint)nbytes;
  +    if (ss == APR_SUCCESS)
  +        return (jint)nbytes;
  +    else
  +        return -(jint)ss;
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, recvb)(TCN_STDARGS, jlong sock,
                                           jobject buf, jint offset, jint len)
   {
       apr_socket_t *s = J2P(sock, apr_socket_t *);
  -
  +    apr_status_t ss;
       apr_size_t nbytes;
       char *bytes;
   
  @@ -311,15 +326,17 @@
       nbytes = (apr_size_t)(*e)->GetDirectBufferCapacity(e, buf);
       if (bytes == NULL || nbytes < 0) {
           tcn_ThrowAPRException(e, APR_EGENERAL);
  -        goto cleanup;
  +        return (jint)(-APR_EGENERAL);
       }
       if (len > 0)
           nbytes = min(nbytes - offset, (apr_size_t)len);
   
  -    TCN_THROW_IF_ERR(apr_socket_recv(s, bytes + offset, &nbytes), nbytes);
  +    ss = apr_socket_recv(s, bytes + offset, &nbytes);
   
  -cleanup:
  -    return (jint)nbytes;
  +    if (ss == APR_SUCCESS)
  +        return (jint)nbytes;
  +    else
  +        return -(jint)ss;
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, recvfrom)(TCN_STDARGS, jlong from,
  @@ -330,18 +347,20 @@
       apr_sockaddr_t *f = J2P(from, apr_sockaddr_t *);
       apr_size_t nbytes = (*e)->GetArrayLength(e, buf);
       jbyte *bytes = (*e)->GetByteArrayElements(e, buf, NULL);
  +    apr_status_t ss;
   
       UNREFERENCED(o);
       if (toread > 0)
           nbytes = min(nbytes - offset, (apr_size_t)toread);
   
  -    TCN_THROW_IF_ERR(apr_socket_recvfrom(f, s,
  -            (apr_int32_t)flags, bytes + offset, &nbytes), nbytes);
  +    ss = apr_socket_recvfrom(f, s, (apr_int32_t)flags, bytes + offset, &nbytes);
   
  -cleanup:
       (*e)->ReleaseByteArrayElements(e, buf, bytes,
                                      nbytes ? 0 : JNI_ABORT);
  -    return (jint)nbytes;
  +    if (ss == APR_SUCCESS)
  +        return (jint)nbytes;
  +    else
  +        return -(jint)ss;
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, optSet)(TCN_STDARGS, jlong sock,
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org