mturk       2005/06/10 04:30:54

  Modified:    jni/java/org/apache/tomcat/jni SSLSocket.java
               jni/native/src sslnetwork.c
  Log:
  Remve create because the SSL connection will be created either
  with accept or connect call.
  
  Revision  Changes    Path
  1.2       +14 -3     
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.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SSLSocket.java    10 Jun 2005 10:55:32 -0000      1.1
  +++ SSLSocket.java    10 Jun 2005 11:30:54 -0000      1.2
  @@ -28,12 +28,23 @@
   public class SSLSocket {
   
       /**
  -     * Create a socket.
  +     * Accept a SSL connection.
        * @param ctx SSLContext to use.
  +     * @param sock APR Socket that already did physical accept.
        * @param pool The pool to use
        * @return The new socket that has been set up.
        */
  -    public static native long create(long ctx, long pool)
  +    public static native long accept(long ctx, long sock long pool)
  +        throws Exception;
  +
  +    /**
  +     * Connect on a SSL connection.
  +     * @param ctx SSLContext to use.
  +     * @param sock APR Socket that already did physical connect.
  +     * @param pool The pool to use
  +     * @return The new socket that has been set up.
  +     */
  +    public static native long connect(long ctx, long sock long pool)
           throws Exception;
   
   
  
  
  
  1.4       +67 -23    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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- sslnetwork.c      10 Jun 2005 10:47:37 -0000      1.3
  +++ sslnetwork.c      10 Jun 2005 11:30:54 -0000      1.4
  @@ -120,44 +120,35 @@
       return APR_SUCCESS;
   }
   
  -TCN_IMPLEMENT_CALL(jlong, SSLSocket, create)(TCN_STDARGS, jlong ctx,
  -                                             jlong pool)
  +static tcn_ssl_conn_t *ssl_create(JNIEnv *env, tcn_ssl_ctxt_t *ctx, 
apr_pool_t *pool)
   {
  -    tcn_ssl_ctxt_t *c = J2P(ctx, tcn_ssl_ctxt_t *);
  -    apr_pool_t *p     = J2P(pool, apr_pool_t *);
       tcn_ssl_conn_t *con;
       SSL *ssl;
   
  -    UNREFERENCED(o);
  -    TCN_ASSERT(pool != 0);
  -    TCN_ASSERT(ctx != 0);
  -
  -    if ((con = apr_pcalloc(p, sizeof(tcn_ssl_conn_t))) == NULL) {
  -        tcn_ThrowAPRException(e, apr_get_os_error());
  -        goto cleanup;
  +    if ((con = apr_pcalloc(pool, sizeof(tcn_ssl_conn_t))) == NULL) {
  +        tcn_ThrowAPRException(env, apr_get_os_error());
  +        return NULL;
       }
  -    if ((ssl = SSL_new(c->ctx)) == NULL) {
  +    if ((ssl = SSL_new(ctx->ctx)) == NULL) {
           char err[256];
           ERR_error_string(ERR_get_error(), err);
  -        tcn_Throw(e, "SSL_new failed (%s)", err);
  +        tcn_Throw(env, "SSL_new failed (%s)", err);
           con = NULL;
  -        goto cleanup;
  +        return NULL;
       }
       SSL_clear(ssl);
  -    con->pool = p;
  -    con->ctx  = c;
  +    con->pool = pool;
  +    con->ctx  = ctx;
       con->ssl  = ssl;
  -    con->shutdown_type = c->shutdown_type;
  -    apr_pool_cleanup_register(p, (const void *)con,
  +    con->shutdown_type = ctx->shutdown_type;
  +    apr_pool_cleanup_register(pool, (const void *)con,
                                 ssl_socket_cleanup,
                                 apr_pool_cleanup_null);
   
   #ifdef TCN_DO_STATISTICS
       ssl_created++;
   #endif
  -cleanup:
  -    return P2J(con);
  -
  +    return con;
   }
   
   TCN_IMPLEMENT_CALL(jint, SSLSocket, shutdown)(TCN_STDARGS, jlong sock,
  @@ -169,7 +160,7 @@
       UNREFERENCED_STDARGS;
       TCN_ASSERT(sock != 0);
       if (con->ssl) {
  -        if (how < 0)
  +        if (how < 1)
               how = con->shutdown_type;
           rv = ssl_smart_shutdown(con->ssl, how);
           /* TODO: Translate OpenSSL Error codes */
  @@ -208,7 +199,60 @@
       return (jint)rv;
   }
   
  +TCN_IMPLEMENT_CALL(jlong, SSLSocket, accept)(TCN_STDARGS, jlong ctx,
  +                                             jlong sock, jlong pool)
  +{
  +    tcn_ssl_ctxt_t *c = J2P(ctx, tcn_ssl_ctxt_t *);
  +    apr_socket_t *s   = J2P(sock, apr_socket_t *);
  +    apr_pool_t *p     = J2P(pool, apr_pool_t *);
  +    tcn_ssl_conn_t *con;
  +    apr_os_sock_t  oss;
  +
  +    UNREFERENCED(o);
  +    TCN_ASSERT(pool != 0);
  +    TCN_ASSERT(ctx != 0);
  +    TCN_ASSERT(sock != 0);
  +
  +    if ((con = ssl_create(e, c, p)) == NULL)
  +        return 0;
  +    TCN_THROW_IF_ERR(apr_os_sock_get(&oss, s), c);
  +    con->sock = s;
  +
  +    SSL_set_fd(con->ssl, (int)oss);
  +    SSL_set_accept_state(con->ssl);
  +
  +    /* TODO: Do SSL_accept() */
  +cleanup:
  +    return P2J(con);
  +}
  +
  +TCN_IMPLEMENT_CALL(jlong, SSLSocket, connect)(TCN_STDARGS, jlong ctx,
  +                                              jlong sock, jlong pool)
  +{
  +    tcn_ssl_ctxt_t *c = J2P(ctx, tcn_ssl_ctxt_t *);
  +    apr_socket_t *s   = J2P(sock, apr_socket_t *);
  +    apr_pool_t *p     = J2P(pool, apr_pool_t *);
  +    tcn_ssl_conn_t *con;
  +    apr_os_sock_t  oss;
  +
  +    UNREFERENCED(o);
  +    TCN_ASSERT(pool != 0);
  +    TCN_ASSERT(ctx != 0);
  +    TCN_ASSERT(sock != 0);
  +
  +    if ((con = ssl_create(e, c, p)) == NULL)
  +        return 0;
  +    TCN_THROW_IF_ERR(apr_os_sock_get(&oss, s), c);
  +    con->sock = s;
   
  +    SSL_set_fd(con->ssl, (int)oss);
  +    SSL_set_connect_state(con->ssl);
  +
  +    /* TODO: Do SSL_connect() */
  +
  +cleanup:
  +    return P2J(con);
  +}
   
   
   #else
  
  
  

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

Reply via email to