From d114f87a45d1d7319cc2e2f4e43455da5eecf651 Mon Sep 17 00:00:00 2001 From: Fredrik Thulin <fredrik@thulin.net> Date: Mon, 28 Jan 2013 17:01:10 +0100 Subject: [PATCH] Include proto (tcp:// etc.) in formatted pkcs11_socket_path. --- gck-rpc-dispatch.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gck-rpc-dispatch.c b/gck-rpc-dispatch.c index c604eca..dfdf33e 100644 --- a/gck-rpc-dispatch.c +++ b/gck-rpc-dispatch.c @@ -2407,7 +2407,7 @@ void gck_rpc_layer_inetd(CK_FUNCTION_LIST_PTR module) * * Returns -1 on failure, and the socket fd otherwise. */ -static int _get_listening_socket(char *host, char *port) +static int _get_listening_socket(const char *proto, const char *host, const char *port) { char hoststr[NI_MAXHOST], portstr[NI_MAXSERV]; struct addrinfo *ai, *first, hints; @@ -2485,7 +2485,7 @@ static int _get_listening_socket(char *host, char *port) } snprintf(pkcs11_socket_path, sizeof(pkcs11_socket_path), - (ai->ai_family == AF_INET6) ? "[%s]:%s" : "%s:%s", hoststr, portstr); + (ai->ai_family == AF_INET6) ? "%s://[%s]:%s" : "%s://%s:%s", proto, hoststr, portstr); out: freeaddrinfo(first); @@ -2531,13 +2531,16 @@ int gck_rpc_layer_initialize(const char *prefix, CK_FUNCTION_LIST_PTR module) * TCP socket */ char *host, *port; + char proto[4]; /* strlen("tcp") and strlen("tls") */ + + snprintf(proto, sizeof(proto), "%s", prefix); if (! gck_rpc_parse_host_port(prefix + 6, &host, &port)) { free(host); return -1; } - if ((sock = _get_listening_socket(host, port)) == -1) { + if ((sock = _get_listening_socket(proto, host, port)) == -1) { free(host); return -1; } -- GitLab