diff --git a/gck-rpc-daemon-standalone.c b/gck-rpc-daemon-standalone.c
index a0039f2f944644f7be3a0d9ce65fb27f1da4d1fc..5f30514dbe10aeb8f63caf62baf4590dd3b2105a 100644
--- a/gck-rpc-daemon-standalone.c
+++ b/gck-rpc-daemon-standalone.c
@@ -119,7 +119,7 @@ int main(int argc, char *argv[])
 	   path = SOCKET_PATH;
 
         if (strcmp(path,"-") == 0) {
-           gck_rpc_layer_inetd();
+           gck_rpc_layer_inetd(funcs);
         } else {
 	   sock = gck_rpc_layer_initialize(path, funcs);
 	   if (sock == -1)
diff --git a/gck-rpc-dispatch.c b/gck-rpc-dispatch.c
index de6f55886e34dd2cc09a3c4dbc03fb0c5a276435..6b0687d44f2ff7ea6128ecbcc5d5aac7eba1a7eb 100644
--- a/gck-rpc-dispatch.c
+++ b/gck-rpc-dispatch.c
@@ -101,7 +101,7 @@ void gck_rpc_log(const char *msg, ...)
 	va_list ap;
 
 	va_start(ap, msg);
-	vfprintf(stdout, msg, ap);
+	vfprintf(stderr, msg, ap);
 	printf("\n");
 	va_end(ap);
 }
@@ -2240,7 +2240,7 @@ void gck_rpc_layer_accept(void)
 	pthread_mutex_unlock(&pkcs11_dispatchers_mutex);
 }
 
-void gck_rpc_layer_inetd(void)
+void gck_rpc_layer_inetd(CK_FUNCTION_LIST_PTR module)
 {
    CallState cs;
 
@@ -2249,6 +2249,8 @@ void gck_rpc_layer_inetd(void)
    cs.read = &read;
    cs.write = &write;
 
+   pkcs11_module = module;
+
    run_dispatch_thread(&cs);
 }
 
diff --git a/gck-rpc-layer.h b/gck-rpc-layer.h
index be6cdeb0c2e8c26692282d2b9c7e5c217971c7a0..5d2766c4fe5e466de380aab99fe04f848da6b80c 100644
--- a/gck-rpc-layer.h
+++ b/gck-rpc-layer.h
@@ -17,6 +17,6 @@ void gck_rpc_layer_uninitialize(void);
 void gck_rpc_layer_accept(void);
 
 /* Run a single connection off of STDIN - call from inetd or stunnel */
-void gck_rpc_layer_inetd(void);
+void gck_rpc_layer_inetd(CK_FUNCTION_LIST_PTR funcs);
 
 #endif /* GCKRPC_LAYER_H_ */