mturk       2005/06/17 05:04:40

  Modified:    jni/java/org/apache/tomcat/jni SSLSocket.java
               jni/native/src sslnetwork.c
  Log:
  Fix bug not setting the opaque for SSL socket.
  Attach now returns the status code, not new socket.
  
  Revision  Changes    Path
  1.14      +3 -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.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- SSLSocket.java    17 Jun 2005 11:22:04 -0000      1.13
  +++ SSLSocket.java    17 Jun 2005 12:04:40 -0000      1.14
  @@ -33,9 +33,9 @@
        * @param sock APR Socket that already did physical connect.
        * @param pool The pool to use
        * @param pool The pool to use
  -     * @return The new socket that has been set up.
  +     * @return APR_STATUS code.
        */
  -    public static native long attach(long ctx, long sock, long pool)
  +    public static native int attach(long ctx, long sock, long pool)
           throws Exception;
   
       /**
  
  
  
  1.14      +9 -149    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.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- sslnetwork.c      17 Jun 2005 11:22:30 -0000      1.13
  +++ sslnetwork.c      17 Jun 2005 12:04:40 -0000      1.14
  @@ -245,147 +245,6 @@
       return (jint)rv;
   }
   
  -#define JFC_TEST 0
  -#if JFC_TEST
  -/*
  - * Use APR sockets directly
  - */
  -
  -static int jbs_apr_new(BIO *bi)
  -{
  -    printf("jbs_apr_new\n");
  -    fflush(stdout);
  -    bi->shutdown = 1;
  -    bi->init     = 0;
  -    bi->num      = -1;
  -    bi->ptr      = NULL;
  -    return 1;
  -}
  -
  -static int jbs_apr_free(BIO *bi)
  -{
  -    if (bi == NULL)
  -        return 0;
  -    else
  -        return 1;
  -}
  -
  -static int jbs_apr_write(BIO *b, const char *in, int inl)
  -{
  -    apr_size_t j = inl;
  -    apr_socket_t *sock=b->ptr;
  -    printf("jbs_apr_write\n");
  -    fflush(stdout);
  -    return(apr_socket_send(sock, in, &j));
  -}
  -
  -static int jbs_apr_read(BIO *b, char *out, int outl)
  -{
  -    apr_size_t j = outl;
  -    apr_socket_t *sock=b->ptr;
  -    int ret;
  -    printf("jbs_apr_read\n");
  -    fflush(stdout);
  -    ret = apr_socket_recv(sock, out, &j);
  -    if (ret == APR_SUCCESS)
  -      return(j);
  -    return(-1);
  -}
  -
  -static int jbs_apr_puts(BIO *b, const char *in)
  -{
  -    return 0;
  -}
  -
  -static int jbs_apr_gets(BIO *b, char *out, int outl)
  -{
  -    return 0;
  -}
  -
  -static long jbs_apr_ctrl(BIO *b, int cmd, long num, void *ptr)
  -{
  -    printf("jbs_apr_ctrl\n");
  -    fflush(stdout);
  -    if (cmd==BIO_CTRL_FLUSH || cmd==BIO_CTRL_DUP)
  -      return 1;
  -    else
  -      return 0;
  -}
  -static BIO_METHOD jbs_apr_methods = {
  -    BIO_TYPE_FILE,
  -    "APR Callback",
  -    jbs_apr_write,
  -    jbs_apr_read,
  -    jbs_apr_puts,
  -    jbs_apr_gets,
  -    jbs_apr_ctrl,
  -    jbs_apr_new,
  -    jbs_apr_free,
  -    NULL
  -};
  -static BIO_METHOD *BIO_jbs_apr()
  -{
  -    return(&jbs_apr_methods);
  -}
  -
  -TCN_IMPLEMENT_CALL(jint, SSLSocket, geterror)(TCN_STDARGS, jlong ctx, jint 
retcode)
  -{
  -    tcn_ssl_conn_t *c = J2P(ctx, tcn_ssl_conn_t *);
  -    UNREFERENCED_STDARGS;
  -    TCN_ASSERT(ctx != 0);
  -    printf("geterror for %d state: %.08x\n", retcode, c->ssl->state);
  -    perror("geterror");
  -    fflush(stdout);
  -    return SSL_get_error(c->ssl, retcode);
  -}
  -
  -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;
  -    BIO *bio = NULL;
  -    int retcode;
  -
  -    UNREFERENCED(o);
  -    TCN_ASSERT(pool != 0);
  -    TCN_ASSERT(ctx != 0);
  -    TCN_ASSERT(sock != 0);
  -
  -    if ((con = ssl_create(e, c, p)) == NULL) {
  -        tcn_ThrowException(e, "Create SSL failed");
  -        return 0;
  -    }
  -    con->sock = s;
  -
  -    if ((bio = BIO_new(BIO_jbs_apr())) == NULL) {
  -        tcn_ThrowException(e, "Create BIO failed");
  -        return 0;
  -    }
  -    bio->ptr = s;
  -
  -    /* XXX cleanup ??? */
  -
  -    /* the bio */
  -    SSL_set_bio(con->ssl, bio, bio);
  -
  -    /* do the handshake*/
  -    retcode = SSL_accept(con->ssl);
  -    if (retcode<=0) {
  -        printf("SSL_accept failed %d state: %.08x\n", retcode, 
con->ssl->state);
  -        printf("SSL_accept %p cert\n", con->ssl->cert);
  -        tcn_ThrowException(e, "Create SSL_accept failed");
  -        return 0;
  -    }
  -
  -cleanup:
  -    return P2J(con);
  -}
  -
  -#endif /* JFC_TEST */
  -
   TCN_IMPLEMENT_CALL(jint, SSLSocket, handshake)(TCN_STDARGS, jlong sock)
   {
       tcn_socket_t *ss = J2P(sock, tcn_socket_t *);
  @@ -555,7 +414,6 @@
       else
            bytes = (*e)->GetByteArrayElements(e, buf, NULL);
       ss = ssl_socket_send(s, bytes + offset, &nbytes);
  -
       if (nb)
           (*e)->ReleasePrimitiveArrayCritical(e, buf, bytes, JNI_ABORT);
       else
  @@ -740,23 +598,25 @@
       }
   }
   
  -TCN_IMPLEMENT_CALL(jlong, SSLSocket, attach)(TCN_STDARGS, jlong ctx,
  -                                             jlong sock, jlong pool)
  +TCN_IMPLEMENT_CALL(jint, SSLSocket, attach)(TCN_STDARGS, jlong ctx,
  +                                            jlong sock, jlong pool)
   {
       tcn_ssl_ctxt_t *c = J2P(ctx, tcn_ssl_ctxt_t *);
       tcn_socket_t *s   = J2P(sock, tcn_socket_t *);
       apr_pool_t *p     = J2P(pool, apr_pool_t *);
       tcn_ssl_conn_t *con;
       apr_os_sock_t  oss;
  +    apr_status_t rv;
   
       UNREFERENCED(o);
       TCN_ASSERT(pool != 0);
       TCN_ASSERT(ctx != 0);
       TCN_ASSERT(sock != 0);
   
  +    if ((rv = apr_os_sock_get(&oss, s->sock)) != APR_SUCCESS)
  +        return rv;
       if ((con = ssl_create(e, c, p)) == NULL)
  -        return 0;
  -    TCN_THROW_IF_ERR(apr_os_sock_get(&oss, s->sock), c);
  +        return APR_EGENERAL;
       con->sock = s->sock;
   
       SSL_set_fd(con->ssl, (int)oss);
  @@ -776,9 +636,9 @@
       s->recvt    = TCN_GETNET_METHOD(recvt);
       s->recvb    = TCN_GETNET_METHOD(recvb);
       s->recvbt   = TCN_GETNET_METHOD(recvbt);
  +    s->opaque   = con;
   
  -cleanup:
  -    return P2J(con);
  +    return APR_SUCCESS;
   }
   
   #else
  
  
  

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

Reply via email to