mturk       2005/06/13 03:48:55

  Modified:    jni/java/org/apache/tomcat/jni SSLSocket.java
               jni/native/src sslnetwork.c
  Log:
  Added SSLSocket.destroy method so we can add the SSLSocket as
  client data to the poller and destroy all the ssl objects in a single call.
  
  Revision  Changes    Path
  1.8       +11 -1     
jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/SSLSocket.java
  
  Index: SSLSocket.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/SSLSocket.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SSLSocket.java    13 Jun 2005 07:31:11 -0000      1.7
  +++ SSLSocket.java    13 Jun 2005 10:48:55 -0000      1.8
  @@ -69,6 +69,16 @@
       public static native int close(long thesocket);
   
       /**
  +     * Destroy the socket.
  +     * <br />
  +     * This function destroys the pool used for <code>attach</code> call.
  +     * The main usage for this function is to allow the SSLSocket to be
  +     * passed as client data to the Poll.
  +     * @param thesocket The socket to destroy
  +     */
  +    public static native int destroy(long thesocket);
  +
  +    /**
        * Send data over a network.
        * <PRE>
        * This functions acts like a blocking write by default.  To change
  
  
  
  1.11      +25 -3     jakarta-tomcat-connectors/jni/native/src/sslnetwork.c
  
  Index: sslnetwork.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/sslnetwork.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- sslnetwork.c      13 Jun 2005 07:31:11 -0000      1.10
  +++ sslnetwork.c      13 Jun 2005 10:48:55 -0000      1.11
  @@ -172,12 +172,27 @@
   {
       apr_interval_time_t timeout;
       apr_pollfd_t pfd;
  -    int type = for_what == SSL_ERROR_WANT_WRITE ? APR_POLLOUT : APR_POLLIN;
  +    int type;
       apr_status_t status;
   
  +    /* Figure out the the poll direction */
  +    switch (for_what) {
  +        case SSL_ERROR_WANT_WRITE:
  +        case SSL_ERROR_WANT_CONNECT:
  +        case SSL_ERROR_WANT_ACCEPT:
  +            type = APR_POLLOUT;
  +        break;
  +        case SSL_ERROR_WANT_READ:
  +            type = APR_POLLIN;
  +        break;
  +        default:
  +            return APR_EINVAL;
  +        break;
  +    }
  +
       apr_socket_timeout_get(con->sock, &timeout);
       pfd.desc_type = APR_POLL_SOCKET;
  -    pfd.desc.s = con->sock;
  +    pfd.desc.s    = con->sock;    
       pfd.reqevents = type;
   
       /* Remove the object if it was in the pollset, then add in the new
  @@ -249,6 +264,13 @@
       return (jint)rv;
   }
   
  +TCN_IMPLEMENT_CALL(void, SSLSocket, destroy)(TCN_STDARGS, jlong sock)
  +{
  +    tcn_ssl_conn_t *con = J2P(sock, tcn_ssl_conn_t *);
  +    UNREFERENCED_STDARGS;
  +    apr_pool_destroy(con->pool);
  +}
  +
   #define JFC_TEST 0
   #if JFC_TEST
   /*
  
  
  

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

Reply via email to