diff --git a/src/sbbs3/js_socket.c b/src/sbbs3/js_socket.c
index 71a0819d056c09e39138e75bcfa4936ebb9b3385..43ad5c0e9d4c1a2f912a073e60aaf9b0c0c3115f 100644
--- a/src/sbbs3/js_socket.c
+++ b/src/sbbs3/js_socket.c
@@ -42,6 +42,7 @@ static JSBool js_connect(JSContext *cx, uintN argc, jsval *arglist);
 static void js_finalize_socket(JSContext *cx, JSObject *obj);
 static JSBool js_ioctlsocket(JSContext *cx, uintN argc, jsval *arglist);
 static JSBool js_listen(JSContext *cx, uintN argc, jsval *arglist);
+static js_callback_t * js_get_callback(JSContext *cx);
 static JSBool js_getsockopt(JSContext *cx, uintN argc, jsval *arglist);
 static JSBool js_peek(JSContext *cx, uintN argc, jsval *arglist);
 static JSBool js_poll(JSContext *cx, uintN argc, jsval *arglist);
@@ -2028,7 +2029,7 @@ js_poll(JSContext *cx, uintN argc, jsval *arglist)
 	return(JS_TRUE);
 }
 
-js_callback_t *
+static js_callback_t *
 js_get_callback(JSContext *cx)
 {
 	JSObject*	scope = JS_GetScopeChain(cx);
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index a7b6a48c5d88971729cf17f51af37e34bc41b30a..ed2d051a45ff276bf89875fe4f21becff2dc0383 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -1972,15 +1972,12 @@ void input_thread(void *arg)
 			pthread_mutex_lock(&sbbs->ssh_mutex);
 			if(cryptStatusError((err=crypt_pop_channel_data(sbbs, (char*)inbuf, rd, &i)))) {
 				pthread_mutex_unlock(&sbbs->ssh_mutex);
-				if(err==CRYPT_ERROR_TIMEOUT) {
-					if(pthread_mutex_unlock(&sbbs->input_thread_mutex)!=0)
-						sbbs->errormsg(WHERE,ERR_UNLOCK,"input_thread_mutex",0);
+				if(pthread_mutex_unlock(&sbbs->input_thread_mutex)!=0)
+					sbbs->errormsg(WHERE,ERR_UNLOCK,"input_thread_mutex",0);
+				if(err==CRYPT_ERROR_TIMEOUT)
 					continue;
-				}
 				/* Handle the SSH error here... */
 				GCES(err, sbbs->cfg.node_num, sbbs->ssh_session, "popping data");
-				if(pthread_mutex_unlock(&sbbs->input_thread_mutex)!=0)
-					sbbs->errormsg(WHERE,ERR_UNLOCK,"input_thread_mutex",0);
 				break;
 			}
 			else {
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index a7b70bb98e02c395a7a143cbd6c11ac417c639c6..f0daa4ceb25c1528f50626e54e68e9516d3f3f8d 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -1429,7 +1429,6 @@ extern "C" {
 #endif
 	DLLEXPORT JSObject* DLLCALL js_CreateSocketObjectFromSet(JSContext* cx, JSObject* parent
 													,char *name, struct xpms_set *set);
-	js_callback_t * js_get_callback(JSContext *cx);
 
 	DLLEXPORT SOCKET	DLLCALL js_socket(JSContext *cx, jsval val);
 	DLLEXPORT int js_polltimeout(JSContext* cx, jsval val);
diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index 25edddb15533bfb349d60379aae0800710f719da..11efc7f59b38a1862f4eb4158edb2d080a1d14cf 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -1223,7 +1223,6 @@ static void js_static_service_thread(void* arg)
 	service_client.callback.yield_interval = service->js.yield_interval;
 	service_client.callback.terminated = &service->terminated;
 	service_client.callback.auto_terminate = TRUE;
-	service_client.callback.events= NULL;
 
 	if((js_runtime=jsrt_GetNew(service->js.max_bytes, 5000, __FILE__, __LINE__))==NULL) {
 		if(service->log_level >= LOG_ERR)
@@ -2290,7 +2289,6 @@ void DLLCALL services_thread(void* arg)
 					client->callback.yield_interval	= service[i].js.yield_interval;
 					client->callback.terminated		= &client->service->terminated;
 					client->callback.auto_terminate	= TRUE;
-					client->callback.events= NULL;
 
 					udp_buf = NULL;