cvs commit: jakarta-tomcat-connectors/jni/native/src jnilib.c proc.c stdlib.c

2005-06-30 Thread mturk
mturk   2005/06/30 00:10:29

  Modified:jni/java/org/apache/tomcat/jni Stdlib.java
   jni/native/include tcn.h
   jni/native/src jnilib.c proc.c stdlib.c
  Log:
  Add getpid and getppid functions. The getppid function on WIndows is
  simulated by passing the environment value to the child process.
  
  Revision  ChangesPath
  1.3   +13 -1 
jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/Stdlib.java
  
  Index: Stdlib.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/Stdlib.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Stdlib.java   14 Jan 2005 14:42:37 -  1.2
  +++ Stdlib.java   30 Jun 2005 07:10:29 -  1.3
  @@ -74,4 +74,16 @@
*/
   public static native void free(long mem);
   
  +/**
  + * Get current process pid.
  + * @return current pid or  1 in case of error.
  + */
  +public static native int getpid();
  +
  +/**
  + * Get current process parent pid.
  + * @return parent pid or  1 in case of error.
  + */
  +public static native int getppid();
  +
   }
  
  
  
  1.27  +2 -1  jakarta-tomcat-connectors/jni/native/include/tcn.h
  
  Index: tcn.h
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/include/tcn.h,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- tcn.h 23 Jun 2005 08:58:05 -  1.26
  +++ tcn.h 30 Jun 2005 07:10:29 -  1.27
  @@ -83,6 +83,7 @@
   #define TCN_FINFO_CLASS TCN_CLASS_PATH FileInfo
   #define TCN_AINFO_CLASS TCN_CLASS_PATH Sockaddr
   #define TCN_ERROR_CLASS TCN_CLASS_PATH Error
  +#define TCN_PARENT_IDE  TCN_PARENT_ID
   
   #define UNREFERENCED(P)  (P) = (P)
   #define UNREFERENCED_STDARGS e = e; o = o
  
  
  
  1.13  +12 -2 jakarta-tomcat-connectors/jni/native/src/jnilib.c
  
  Index: jnilib.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/jnilib.c,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- jnilib.c  23 Jun 2005 08:58:05 -  1.12
  +++ jnilib.c  30 Jun 2005 07:10:29 -  1.13
  @@ -42,6 +42,8 @@
   static jmethodID jString_init;
   static jmethodID jString_getBytes;
   
  +int tcn_parent_pid = 0;
  +
   /* Called by the JVM when APR_JAVA is loaded */
   JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved)
   {
  @@ -67,7 +69,15 @@
   return JNI_ERR;
   if(tcn_load_ainfo_class(env, jAinfo_class) != APR_SUCCESS)
   return JNI_ERR;
  -
  +#ifdef WIN32
  +{
  +char *ppid = getenv(TCN_PARENT_IDE);
  +if (ppid)
  +tcn_parent_pid = atoi(ppid);
  +}
  +#else
  +tcn_parent_pid = getppid();
  +#endif
   apr_initialize();
   
   return  JNI_VERSION_1_4;
  
  
  
  1.6   +19 -4 jakarta-tomcat-connectors/jni/native/src/proc.c
  
  Index: proc.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/proc.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- proc.c17 Jun 2005 09:41:30 -  1.5
  +++ proc.c30 Jun 2005 07:10:29 -  1.6
  @@ -209,7 +209,7 @@
   as = (*e)-GetArrayLength(e, args);
   if (env)
   es = (*e)-GetArrayLength(e, args);
  -if (as  MAX_ARGS_SIZE || es  MAX_ENV_SIZE) {
  +if (as  (MAX_ARGS_SIZE - 1) || es  (MAX_ENV_SIZE - 2)) {
   TCN_FREE_CSTRING(progname);
   return APR_EINVAL;
   }
  @@ -219,19 +219,34 @@
   s_args[i] = tcn_get_string(e, str);
   (*e)-DeleteLocalRef(e, str);
   }
  +s_args[i] = NULL;
   pargs = (const char * const *)s_args[0];
   }
   if (es) {
   for (i = 0; i  es; i++) {
   jstring str = (*e)-GetObjectArrayElement(e, env, i);
  -s_env[i] = tcn_get_string(e, str);
  +s_env[i+1] = tcn_get_string(e, str);
   (*e)-DeleteLocalRef(e, str);
   }
  +#ifdef WIN32
  +s_env[i++] = apr_psprintf(p, TCN_PARENT_IDE =%d, getpid());
  +#endif
  +s_env[i] = NULL;
   penv = (const char * const *)s_env[0];
   }
  -
  +#ifdef WIN32
  +else {
  +char pps[32];
  +itoa(getpid(), pps, 10);
  +SetEnvironmentVariable(TCN_PARENT_IDE, pps);
  +}
  +#endif
   rv = apr_proc_create(np, J2S(progname), pargs,
penv, a, p);
  +#ifdef WIN32
  +if (!es)
  +SetEnvironmentVariable(TCN_PARENT_IDE, NULL);
  +#endif
   
   /* Free local resources */
   TCN_FREE_CSTRING(progname);
  
  
  
  1.4   +15 -1 

cvs commit: jakarta-tomcat-connectors/jni/native/src jnilib.c ssl.c sslinfo.c

2005-06-16 Thread mturk
mturk   2005/06/16 04:39:12

  Modified:jni/native/include ssl_private.h tcn.h
   jni/native/src jnilib.c ssl.c sslinfo.c
  Log:
  Add more SSL infos.
  Also change the tcn_new_string to allow the NULL to be passed.
  
  Revision  ChangesPath
  1.30  +4 -1  
jakarta-tomcat-connectors/jni/native/include/ssl_private.h
  
  Index: ssl_private.h
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jni/native/include/ssl_private.h,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- ssl_private.h 15 Jun 2005 12:08:02 -  1.29
  +++ ssl_private.h 16 Jun 2005 11:39:12 -  1.30
  @@ -145,6 +145,9 @@
   #define SSL_INFO_CIPHER (2)
   #define SSL_INFO_CIPHER_USEKEYSIZE  (3)
   #define SSL_INFO_CIPHER_ALGKEYSIZE  (4)
  +#define SSL_INFO_CIPHER_VERSION (5)
  +#define SSL_INFO_CIPHER_DESCRIPTION (6)
  +#define SSL_INFO_PROTOCOL   (7)
   
   #define SSL_VERIFY_ERROR_IS_OPTIONAL(errnum) \
  ((errnum == X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT) \
  
  
  
  1.18  +4 -2  jakarta-tomcat-connectors/jni/native/include/tcn.h
  
  Index: tcn.h
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/include/tcn.h,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- tcn.h 12 Jun 2005 07:01:03 -  1.17
  +++ tcn.h 16 Jun 2005 11:39:12 -  1.18
  @@ -97,7 +97,9 @@
   voidtcn_Throw(JNIEnv *, const char *, ...);
   voidtcn_ThrowException(JNIEnv *, const char *);
   voidtcn_ThrowAPRException(JNIEnv *, apr_status_t);
  -jstring tcn_new_string(JNIEnv *, const char *, int);
  +jstring tcn_new_string(JNIEnv *, const char *);
  +jstring tcn_new_stringn(JNIEnv *, const char *, size_t);
  +jbyteArray  tcn_new_arrayb(JNIEnv *, const unsigned char *, size_t);
   char   *tcn_get_string(JNIEnv *, jstring);
   char   *tcn_strdup(JNIEnv *, jstring);
   char   *tcn_pstrdup(JNIEnv *, jstring, apr_pool_t *);
  
  
  
  1.10  +23 -3 jakarta-tomcat-connectors/jni/native/src/jnilib.c
  
  Index: jnilib.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/jnilib.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- jnilib.c  10 Jun 2005 10:30:18 -  1.9
  +++ jnilib.c  16 Jun 2005 11:39:12 -  1.10
  @@ -89,12 +89,14 @@
   apr_terminate();
   }
   
  -jstring tcn_new_string(JNIEnv *env, const char *str, int l)
  +jstring tcn_new_stringn(JNIEnv *env, const char *str, size_t l)
   {
   jstring result;
   jbyteArray bytes = 0;
   size_t len = l;
  -
  +
  +if (!str)
  +return NULL;
   if ((*env)-EnsureLocalCapacity(env, 2)  0) {
   return NULL; /* out of memory error */
   }
  @@ -110,6 +112,24 @@
   return NULL;
   }
   
  +jbyteArray tcn_new_arrayb(JNIEnv *env, const unsigned char *data, size_t len)
  +{
  +jbyteArray bytes = (*env)-NewByteArray(env, (jsize)len);
  +if (bytes != NULL) {
  +(*env)-SetByteArrayRegion(env, bytes, 0, (jint)len, (jbyte *)data);
  +}
  +return bytes;
  +}
  +
  +
  +jstring tcn_new_string(JNIEnv *env, const char *str)
  +{
  +if (!str)
  +return NULL;
  +else
  +return (*env)-NewStringUTF(env, str);
  +}
  +
   char *tcn_get_string(JNIEnv *env, jstring jstr)
   {
   jbyteArray bytes = NULL;
  
  
  
  1.36  +3 -3  jakarta-tomcat-connectors/jni/native/src/ssl.c
  
  Index: ssl.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/ssl.c,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- ssl.c 12 Jun 2005 07:33:08 -  1.35
  +++ ssl.c 16 Jun 2005 11:39:12 -  1.36
  @@ -599,7 +599,7 @@
   JNIEnv   *e = j-cb.env;
   ret = (*e)-CallIntMethod(e, j-cb.obj,
 j-cb.mid[2],
  -  tcn_new_string(e, in, -1));
  +  tcn_new_string(e, in));
   }
   return ret;
   }
  @@ -775,7 +775,7 @@
   char buf[256];
   UNREFERENCED(o);
   ERR_error_string(ERR_get_error(), buf);
  -return tcn_new_string(e, buf, -1);
  +return tcn_new_string(e, buf);
   }
   
   #else
  
  
  
  1.3   +23 -6 jakarta-tomcat-connectors/jni/native/src/sslinfo.c
  
  Index: sslinfo.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/sslinfo.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- sslinfo.c 15 Jun 2005 12:08:02 -  1.2
  +++ 

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

2005-06-10 Thread mturk
mturk   2005/06/10 03:30:18

  Modified:jni/native/src jnilib.c
  Log:
  Dump ssl network statistics.
  
  Revision  ChangesPath
  1.9   +3 -1  jakarta-tomcat-connectors/jni/native/src/jnilib.c
  
  Index: jnilib.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/jnilib.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- jnilib.c  1 Jun 2005 06:33:37 -   1.8
  +++ jnilib.c  10 Jun 2005 10:30:18 -  1.9
  @@ -35,6 +35,7 @@
   #ifdef TCN_DO_STATISTICS
   extern void sp_poll_dump_statistics();
   extern void sp_network_dump_statistics();
  +extern void ssl_network_dump_statistics();
   #endif
   
   apr_pool_t *tcn_global_pool = NULL;
  @@ -191,6 +192,7 @@
   #ifdef TCN_DO_STATISTICS
   sp_poll_dump_statistics();
   sp_network_dump_statistics();
  +ssl_network_dump_statistics();
   fprintf(stderr, APR Terminated\n);
   #endif
   }
  
  
  

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



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

2005-05-30 Thread mturk
mturk   2005/05/29 23:17:14

  Modified:jni/native/src jnilib.c
  Log:
  Rename tcn_dup_string to tcn_strdup and add tcn_pstrdup
  
  Revision  ChangesPath
  1.7   +19 -2 jakarta-tomcat-connectors/jni/native/src/jnilib.c
  
  Index: jnilib.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/jnilib.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- jnilib.c  28 May 2005 08:18:09 -  1.6
  +++ jnilib.c  30 May 2005 06:17:14 -  1.7
  @@ -26,6 +26,8 @@
   #include apr_network_io.h
   #include apr_file_io.h
   #include apr_mmap.h
  +#include apr_atomic.h
  +#include apr_strings.h
   
   #include tcn.h
   #include tcn_version.h
  @@ -67,6 +69,7 @@
   return JNI_ERR;
   
   apr_initialize();
  +
   return  JNI_VERSION_1_4;
   }
   
  @@ -136,7 +139,7 @@
   return result;
   }
   
  -char *tcn_dup_string(JNIEnv *env, jstring jstr)
  +char *tcn_strdup(JNIEnv *env, jstring jstr)
   {
   char *result = NULL;
   const char *cjstr;
  @@ -149,6 +152,19 @@
   return result;
   }
   
  +char *tcn_pstrdup(JNIEnv *env, jstring jstr, apr_pool_t *pool)
  +{
  +char *result = NULL;
  +const char *cjstr;
  +
  +cjstr = (const char *)((*env)-GetStringUTFChars(env, jstr, 0));
  +if (cjstr) {
  +result = apr_pstrdup(pool, cjstr);
  +(*env)-ReleaseStringUTFChars(env, jstr, cjstr);
  +}
  +return result;
  +}
  +
   TCN_IMPLEMENT_CALL(jboolean, Library, initialize)(TCN_STDARGS)
   {
   
  @@ -157,6 +173,7 @@
   if (apr_pool_create(tcn_global_pool, NULL) != APR_SUCCESS) {
   return JNI_FALSE;
   }
  +apr_atomic_init(tcn_global_pool);
   }
   return JNI_TRUE;
   }
  
  
  

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



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

2005-05-28 Thread mturk
mturk   2005/05/28 01:18:09

  Modified:jni/java/org/apache/tomcat/jni Library.java
   jni/native/src jnilib.c
  Log:
  Check if we have at least APR 1.0 and Threading support.
  
  Revision  ChangesPath
  1.6   +10 -2 
jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/Library.java
  
  Index: Library.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/Library.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Library.java  27 May 2005 10:04:43 -  1.5
  +++ Library.java  28 May 2005 08:18:09 -  1.6
  @@ -95,6 +95,8 @@
   
   /* TCN_VERSION_STRING */
   public static native String versionString();
  +/* APR_VERSION_STRING */
  +public static native String aprVersionString();
   
   /*  APR Feature Macros */
   public static boolean APR_HAVE_IPV6   = false;
  @@ -192,8 +194,14 @@
   APR_CHARSET_EBCDIC  = has(18);
   APR_TCP_NODELAY_INHERITED = has(19);
   APR_O_NONBLOCK_INHERITED  = has(20);
  +if (APR_MAJOR_VERSION  1) {
  +throw new UnsatisfiedLinkError(Unsupported APR Version ( +
  +   aprVersionString() + ));
  +}
  +if (!APR_HAS_THREADS) {
  +throw new UnsatisfiedLinkError(Missing APR_HAS_THREADS);
  +}
   }
   return initialize();
   }
  -
   }
  
  
  
  1.6   +7 -1  jakarta-tomcat-connectors/jni/native/src/jnilib.c
  
  Index: jnilib.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/jnilib.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- jnilib.c  27 May 2005 16:39:13 -  1.5
  +++ jnilib.c  28 May 2005 08:18:09 -  1.6
  @@ -231,6 +231,12 @@
   return AJP_TO_JSTRING(TCN_VERSION_STRING);
   }
   
  +TCN_IMPLEMENT_CALL(jstring, Library, aprVersionString)(TCN_STDARGS)
  +{
  +UNREFERENCED(o);
  +return AJP_TO_JSTRING(apr_version_string());
  +}
  +
   TCN_IMPLEMENT_CALL(jboolean, Library, has)(TCN_STDARGS, jint what)
   {
   jboolean rv = JNI_FALSE;
  
  
  

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



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

2005-05-27 Thread mturk
mturk   2005/05/27 09:39:13

  Modified:jni/native/include tcn.h
   jni/native/src jnilib.c network.c poll.c
  Log:
  Add statistics data that is compiled in only if -DTCN_DO_STATISTICS
  is defined at compile time.
  
  Revision  ChangesPath
  1.6   +5 -3  jakarta-tomcat-connectors/jni/native/include/tcn.h
  
  Index: tcn.h
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/include/tcn.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- tcn.h 24 May 2005 09:24:39 -  1.5
  +++ tcn.h 27 May 2005 16:39:13 -  1.6
  @@ -18,7 +18,7 @@
* @author Mladen Turk
* @version $Revision$, $Date$
*/
  - 
  +
   #ifndef TCN_H
   #define TCN_H
   
  @@ -138,5 +138,7 @@
   
   typedef struct tcn_callback tcn_callback_t;
   
  -
  +#ifdef TCN_DO_STATISTICS
  +#define TCN_MAX(a, b) ((a)  (b) ? (a) : (b))
  +#endif
   #endif /* TCN_H */
  
  
  
  1.5   +17 -4 jakarta-tomcat-connectors/jni/native/src/jnilib.c
  
  Index: jnilib.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/jnilib.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- jnilib.c  24 May 2005 09:24:40 -  1.4
  +++ jnilib.c  27 May 2005 16:39:13 -  1.5
  @@ -18,7 +18,7 @@
* @author Mladen Turk
* @version $Revision$, $Date$
*/
  - 
  +
   #include apr.h
   #include apr_pools.h
   #include apr_version.h
  @@ -30,6 +30,10 @@
   #include tcn.h
   #include tcn_version.h
   
  +#ifdef TCN_DO_STATISTICS
  +extern void sp_poll_dump_statistics();
  +extern void sp_network_dump_statistics();
  +#endif
   
   apr_pool_t *tcn_global_pool = NULL;
   static JavaVM *tcn_global_vm = NULL;
  @@ -44,7 +48,7 @@
   JNIEnv *env;
   
   UNREFERENCED(reserved);
  -if ((*vm)-GetEnv(vm, (void **)env, JNI_VERSION_1_2)) {
  +if ((*vm)-GetEnv(vm, (void **)env, JNI_VERSION_1_4)) {
   return JNI_ERR;
   }
   tcn_global_vm = vm;
  @@ -63,7 +67,7 @@
   return JNI_ERR;
   
   apr_initialize();
  -return  JNI_VERSION_1_2;
  +return  JNI_VERSION_1_4;
   }
   
   
  @@ -73,6 +77,7 @@
   JNIEnv *env;
   
   UNREFERENCED(reserved);
  +
   if ((*vm)-GetEnv(vm, (void **)env, JNI_VERSION_1_2)) {
   return;
   }
  @@ -161,8 +166,16 @@
   
   UNREFERENCED_STDARGS;
   if (tcn_global_pool) {
  +#ifdef TCN_DO_STATISTICS
  +fprintf(stderr, APR Statistical data \n);
  +#endif
   apr_pool_destroy(tcn_global_pool);
   tcn_global_pool = NULL;
  +#ifdef TCN_DO_STATISTICS
  +sp_poll_dump_statistics();
  +sp_network_dump_statistics();
  +fprintf(stderr, APR Terminated\n);
  +#endif
   }
   }
   
  
  
  
  1.21  +51 -3 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.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- network.c 24 May 2005 09:24:40 -  1.20
  +++ network.c 27 May 2005 16:39:13 -  1.21
  @@ -18,12 +18,19 @@
* @author Mladen Turk
* @version $Revision$, $Date$
*/
  - 
  +
   #include apr.h
   #include apr_pools.h
   #include apr_network_io.h
  +#include apr_portable.h
   #include tcn.h
   
  +#ifdef TCN_DO_STATISTICS
  +static int sp_created  = 0;
  +static int sp_closed   = 0;
  +static int sp_cleared  = 0;
  +static int sp_accepted = 0;
  +#endif
   
   #if  !APR_HAVE_IPV6
   #define APR_INET6 APR_INET
  @@ -40,6 +47,25 @@
   else if (F == 1) T = SOCK_DGRAM; \
   else T = F
   
  +#ifdef TCN_DO_STATISTICS
  +
  +static apr_status_t sp_socket_cleanup(void *data)
  +{
  +sp_cleared++;
  +return APR_SUCCESS;
  +}
  +
  +void sp_network_dump_statistics()
  +{
  +fprintf(stderr, Network Statistics ..\n);
  +fprintf(stderr, Sockets created : %d\n, sp_created);
  +fprintf(stderr, Sockets accepted: %d\n, sp_accepted);
  +fprintf(stderr, Sockets closed  : %d\n, sp_closed);
  +fprintf(stderr, Sockets cleared : %d\n, sp_cleared);
  +}
  +
  +#endif
  +
   TCN_IMPLEMENT_CALL(jlong, Address, info)(TCN_STDARGS,
jstring hostname,
jint family, jint port,
  @@ -138,6 +164,13 @@
   TCN_THROW_IF_ERR(apr_socket_create(s,
f, t, protocol, p), s);
   
  +#ifdef TCN_DO_STATISTICS
  +sp_created++;
  +apr_pool_cleanup_register(p, (const void *)s,
  +  sp_socket_cleanup,
  +  apr_pool_cleanup_null);
  +#endif
  +
   cleanup:
   return P2J(s);
   
  @@ -159,6 +192,12 @@
   
   

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

2005-05-20 Thread mturk
mturk   2005/05/20 00:31:41

  Modified:jni/java/org/apache/tomcat/jni SSL.java
   jni/native/src jnilib.c ssl.c
  Log:
  Added SSL.initialize that needs to be called if SSL support is desired.
  
  Revision  ChangesPath
  1.2   +14 -5 
jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/SSL.java
  
  Index: SSL.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/SSL.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SSL.java  20 May 2005 07:01:03 -  1.1
  +++ SSL.java  20 May 2005 07:31:41 -  1.2
  @@ -24,10 +24,19 @@
   
   public final class SSL {
   
  - /* Return OpenSSL version number */
  -private static native int version();
  +/* Return OpenSSL version number */
  +public static native int version();
  +
  +/* Return OpenSSL version string */
  +public static native String versionString();
  +
  +/**
  + * Initialize OpenSSL support.
  + * This function needs to be called once for the
  + * lifetime of JVM. Library.init() has to be called before.
  + * @return APR status code
  + */
  +public static native int initialize();
   
  - /* Return OpenSSL version string */
  -private static native String versionString();
   
   }
  
  
  
  1.2   +1 -1  jakarta-tomcat-connectors/jni/native/src/jnilib.c
  
  Index: jnilib.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/jnilib.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- jnilib.c  14 Jan 2005 13:47:58 -  1.1
  +++ jnilib.c  20 May 2005 07:31:41 -  1.2
  @@ -25,7 +25,7 @@
   #include tcn_version.h
   
   
  -static apr_pool_t *tcn_global_pool = NULL;
  +apr_pool_t *tcn_global_pool = NULL;
   static JavaVM *tcn_global_vm = NULL;
   
   static jclassjString_class;
  
  
  
  1.4   +70 -0 jakarta-tomcat-connectors/jni/native/src/ssl.c
  
  Index: ssl.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/ssl.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ssl.c 20 May 2005 07:01:04 -  1.3
  +++ ssl.c 20 May 2005 07:31:41 -  1.4
  @@ -22,6 +22,9 @@
   #ifdef HAVE_OPENSSL
   #include ssl_private.h
   
  +static int ssl_initialized = 0;
  +extern apr_pool_t *tcn_global_pool;
  +
   TCN_IMPLEMENT_CALL(jint, SSL, version)(TCN_STDARGS)
   {
   UNREFERENCED_STDARGS;
  @@ -34,9 +37,76 @@
   return AJP_TO_JSTRING(OPENSSL_VERSION_TEXT);
   }
   
  +/*
  + *  the various processing hooks
  + */
  +static apr_status_t ssl_init_cleanup(void *data)
  +{
  +UNREFERENCED(data);
  +/*
  + * Try to kill the internals of the SSL library.
  + */
  +#if OPENSSL_VERSION_NUMBER = 0x00907001
  +/* Corresponds to OPENSSL_load_builtin_modules():
  + * XXX: borrowed from apps.h, but why not CONF_modules_free()
  + * which also invokes CONF_modules_finish()?
  + */
  +CONF_modules_unload(1);
  +#endif
  +/* Corresponds to SSL_library_init: */
  +EVP_cleanup();
  +#if HAVE_ENGINE_LOAD_BUILTIN_ENGINES
  +ENGINE_cleanup();
  +#endif
  +#if OPENSSL_VERSION_NUMBER = 0x00907001
  +CRYPTO_cleanup_all_ex_data();
  +#endif
  +ERR_remove_state(0);
   
  +/* Don't call ERR_free_strings here; ERR_load_*_strings only
  + * actually load the error strings once per process due to static
  + * variable abuse in OpenSSL. */
  +
  +/* 
  + * TODO: determine somewhere we can safely shove out diagnostics 
  + *   (when enabled) at this late stage in the game:
  + * CRYPTO_mem_leaks_fp(stderr);
  + */
  +return APR_SUCCESS;
  +}
   
  +TCN_IMPLEMENT_CALL(jint, SSL, initialize)(TCN_STDARGS)
  +{
  +
  +UNREFERENCED_STDARGS;
  +if (!tcn_global_pool)
  +return (jint)APR_EINVAL;
  +/* Check if already initialized */
  +if (ssl_initialized++)
  +return (jint)APR_SUCCESS;
  +/* We must register the library in full, to ensure our configuration 
  + * code can successfully test the SSL environment.
  + */
  +CRYPTO_malloc_init();
  +ERR_load_crypto_strings();
  +SSL_load_error_strings();
  +SSL_library_init();
  +#if HAVE_ENGINE_LOAD_BUILTIN_ENGINES
  +ENGINE_load_builtin_engines();
  +#endif
  +#if OPENSSL_VERSION_NUMBER = 0x00907001
  +OPENSSL_load_builtin_modules();
  +#endif
  +
  +/*
  + * Let us cleanup the ssl library when the module is unloaded
  + */
  +apr_pool_cleanup_register(tcn_global_pool, NULL,
  +  ssl_init_cleanup,
  +  apr_pool_cleanup_null);
   
  +return (jint)APR_SUCCESS;
  +}
   
   #else
   /*