costin 02/05/23 21:30:07 Modified: jk/native2/jni jk_jni_aprImpl.c Log: Remove the mutex code ( move to a separate jk component ). Add few extra checks. Revision Changes Path 1.23 +21 -85 jakarta-tomcat-connectors/jk/native2/jni/jk_jni_aprImpl.c Index: jk_jni_aprImpl.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/jni/jk_jni_aprImpl.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- jk_jni_aprImpl.c 23 May 2002 23:45:07 -0000 1.22 +++ jk_jni_aprImpl.c 24 May 2002 04:30:07 -0000 1.23 @@ -93,8 +93,6 @@ #include "signal.h" -#include "apr_proc_mutex.h" - static apr_pool_t *jniAprPool; static jk_workerEnv_t *workerEnv; static int jniDebug=0; @@ -182,6 +180,9 @@ static void jk2_SigAction(int sig) { fprintf(stderr, "Signal %d\n", sig ); + + /* Make a callback using the jni channel */ + signal( sig, jk2_SigAction ); } #endif @@ -193,13 +194,12 @@ */ JNIEXPORT jint JNICALL -Java_org_apache_jk_apr_AprImpl_signal(JNIEnv *jniEnv, jobject _jthis, jint bitMask, - jobject func) +Java_org_apache_jk_apr_AprImpl_signal(JNIEnv *jniEnv, jobject _jthis, jint signalNr ) { #ifdef HAVE_SIGNALS memset(& jkAction, 0, sizeof(jkAction)); jkAction.sa_handler=jk2_SigAction; - sigaction((int)bitMask, &jkAction, (void *) NULL); + sigaction((int)signalNr, &jkAction, (void *) NULL); #endif return 0; } @@ -214,21 +214,14 @@ /* -------------------- User related functions -------------------- */ -JNIEXPORT jlong JNICALL -Java_org_apache_jk_apr_AprImpl_userId(JNIEnv *jniEnv, jobject _jthis) -{ - - return 0; -} - -JNIEXPORT jlong JNICALL +JNIEXPORT jint JNICALL Java_org_apache_jk_apr_AprImpl_getPid(JNIEnv *jniEnv, jobject _jthis) { - return (jlong) getpid(); + return (jint) getpid(); } -JNIEXPORT jlong JNICALL +JNIEXPORT jint JNICALL Java_org_apache_jk_apr_AprImpl_setUser(JNIEnv *jniEnv, jobject _jthis, jstring userJ, jstring groupJ) { @@ -259,78 +252,11 @@ #endif - return rc; + return (jint)rc; } /* -------------------- interprocess mutexes -------------------- */ -JNIEXPORT jlong JNICALL -Java_org_apache_jk_apr_AprImpl_mutexCreate(JNIEnv *jniEnv, jobject _jthis, jlong poolP, - jstring fileJ, - jint mechJ ) -{ - apr_proc_mutex_t *mutex; - apr_lockmech_e mech=(apr_lockmech_e)mechJ; - apr_pool_t *pool=(apr_pool_t *)(void *)(long)poolP; - apr_status_t st; - char *fname=(char *)(*jniEnv)->GetStringUTFChars(jniEnv, fileJ, 0); - - st=apr_proc_mutex_create( &mutex, fname, mech, pool ); - - (*jniEnv)->ReleaseStringUTFChars(jniEnv, fileJ, fname); - - return (jlong)(long)(void *)mutex; -} - -JNIEXPORT jlong JNICALL -Java_org_apache_jk_apr_AprImpl_mutexLock(JNIEnv *jniEnv, jobject _jthis, jlong poolP, - jlong mutexP ) -{ - apr_proc_mutex_t *mutex=(apr_proc_mutex_t *)(void *)(long)mutexP; - apr_status_t st; - - st=apr_proc_mutex_lock( mutex ); - - return (jlong)(long)st; -} - -JNIEXPORT jlong JNICALL -Java_org_apache_jk_apr_AprImpl_mutexTryLock(JNIEnv *jniEnv, jobject _jthis, jlong poolP, - jlong mutexP ) -{ - apr_proc_mutex_t *mutex=(apr_proc_mutex_t *)(void *)(long)mutexP; - apr_status_t st; - - st=apr_proc_mutex_trylock( mutex ); - - return (jlong)(long)st; -} - -JNIEXPORT jlong JNICALL -Java_org_apache_jk_apr_AprImpl_mutexUnLock(JNIEnv *jniEnv, jobject _jthis, jlong poolP, - jlong mutexP ) -{ - apr_proc_mutex_t *mutex=(apr_proc_mutex_t *)(void *)(long)mutexP; - apr_status_t st; - - st=apr_proc_mutex_unlock( mutex ); - - return (jlong)(long)st; -} - -JNIEXPORT jlong JNICALL -Java_org_apache_jk_apr_AprImpl_mutexDestroy(JNIEnv *jniEnv, jobject _jthis, jlong poolP, - jlong mutexP ) -{ - apr_proc_mutex_t *mutex=(apr_proc_mutex_t *)(void *)(long)mutexP; - apr_status_t st; - - st=apr_proc_mutex_destroy( mutex ); - - return (jlong)(long)st; -} - - /* ==================== Unix sockets ==================== */ /* It seems apr doesn't support them yet, so this code will use the 'native' calls. For 'tcp' sockets we just use what java provides. @@ -765,7 +691,7 @@ jk_env_t *env = (jk_env_t *)(void *)(long)envJ; jk_bean_t *compCtx=(jk_bean_t *)(void *)(long)endpointP; void *target=(void *)(long)componentP; - jk_endpoint_t *ep = compCtx->object; + jk_endpoint_t *ep; jbyte *nbuf; jboolean iscopy; @@ -774,7 +700,17 @@ jint rc = -1; unsigned acc = 0; - /*env->l->jkLog(env, env->l, JK_LOG_INFO,"jkInvoke()\n"); */ + if( compCtx==NULL || data==NULL || endpointP==NULL ) { + env->l->jkLog(env, env->l, JK_LOG_ERROR,"jni.jkInvoke() NPE\n"); + return JK_ERR; + } + + ep = compCtx->object; + + if( ep==NULL || ep->reply==NULL) { + env->l->jkLog(env, env->l, JK_LOG_ERROR,"jni.jkInvoke() NPE ep==null\n"); + return JK_ERR; + } nbuf = (*jniEnv)->GetByteArrayElements(jniEnv, data, &iscopy);
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>