Add environment var for socket names
authorJose Bollo <jose.bollo@iot.bzh>
Wed, 22 May 2019 14:03:10 +0000 (16:03 +0200)
committerJose Bollo <jose.bollo@iot.bzh>
Wed, 22 May 2019 14:03:10 +0000 (16:03 +0200)
Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
src/rcyn-client.c
src/rcyn-client.h
src/rcyn-protocol.c
src/rcyn-protocol.h
src/rcyn-server.c

index c5fda4b..baffb83 100644 (file)
@@ -453,8 +453,16 @@ rcyn_open(
        rcyn_t *rcyn;
        int rc;
 
+       /* socket spec */
+       switch(type) {
+       default:
+       case rcyn_Check: socketspec = rcyn_get_socket_check(socketspec); break;
+       case rcyn_Admin: socketspec = rcyn_get_socket_admin(socketspec); break;
+       case rcyn_Agent: socketspec = rcyn_get_socket_agent(socketspec); break;
+       }
+
        /* allocate the structure */
-       *prcyn = rcyn = malloc(sizeof *rcyn + (socketspec ? strlen(socketspec) : 0));
+       *prcyn = rcyn = malloc(sizeof *rcyn + 1 + strlen(socketspec));
        if (rcyn == NULL) {
                rc = -ENOMEM;
                goto error;
@@ -466,15 +474,7 @@ rcyn_open(
                goto error2;
 
        /* socket spec */
-       if (socketspec)
-               strcpy((char*)(rcyn+1), socketspec);
-       else
-               switch(rcyn->type) {
-               default:
-               case rcyn_Check: socketspec = rcyn_default_check_socket_spec; break;
-               case rcyn_Admin: socketspec = rcyn_default_admin_socket_spec; break;
-               case rcyn_Agent: socketspec = rcyn_default_agent_socket_spec; break;
-               }
+       strcpy((char*)(rcyn+1), socketspec);
 
        /* record type and weakly create cache */
        cache_create(&rcyn->cache, cache_size < MIN_CACHE_SIZE ? MIN_CACHE_SIZE : cache_size);
index 48ecbf6..a48d007 100644 (file)
@@ -155,4 +155,3 @@ rcyn_async_check(
                int status),
        void *closure
 );
-
index d08c81b..e3071e9 100644 (file)
@@ -15,6 +15,8 @@
  * limitations under the License.
  */
 
+#include <stdlib.h>
+
 #include "rcyn-protocol.h"
 
 const char
@@ -80,3 +82,30 @@ const char
        rcyn_default_check_socket_spec[] = RCYN_DEFAULT_CHECK_SOCKET_SPEC,
        rcyn_default_admin_socket_spec[] = RCYN_DEFAULT_ADMIN_SOCKET_SPEC,
        rcyn_default_agent_socket_spec[] = RCYN_DEFAULT_AGENT_SOCKET_SPEC;
+
+const char *
+rcyn_get_socket_check(
+       const char *value
+) {
+       return value
+               ?: secure_getenv("CYNARA_SOCKET_CHECK")
+               ?: rcyn_default_check_socket_spec;
+}
+
+const char *
+rcyn_get_socket_admin(
+       const char *value
+) {
+       return value
+               ?: secure_getenv("CYNARA_SOCKET_ADMIN")
+               ?: rcyn_default_admin_socket_spec;
+}
+
+const char *
+rcyn_get_socket_agent(
+       const char *value
+) {
+       return value
+               ?: secure_getenv("CYNARA_SOCKET_AGENT")
+               ?: rcyn_default_agent_socket_spec;
+}
index 386bd94..c408dac 100644 (file)
@@ -49,3 +49,21 @@ extern const char
        rcyn_default_check_socket_spec[],
        rcyn_default_admin_socket_spec[],
        rcyn_default_agent_socket_spec[];
+
+extern
+const char *
+rcyn_get_socket_check(
+       const char *value
+);
+
+extern
+const char *
+rcyn_get_socket_admin(
+       const char *value
+);
+
+extern
+const char *
+rcyn_get_socket_agent(
+       const char *value
+);
index 951e655..4ea49b0 100644 (file)
@@ -406,8 +406,7 @@ onrequest(
                        key.session = args[2];
                        key.user = args[3];
                        key.permission = args[4];
-                       cyn_test(&key, &value);
-                       checkcb(cli, &value);
+                       cyn_test_async(checkcb, cli, &key);
                        return;
                }
                break;
@@ -667,7 +666,7 @@ rcyn_server_create(
        }
 
        /* create the admin server socket */
-       admin_socket_spec = admin_socket_spec ?: rcyn_default_admin_socket_spec;
+       admin_socket_spec = rcyn_get_socket_admin(admin_socket_spec);
        srv->admin.fd = socket_open(admin_socket_spec, 1);
        if (srv->admin.fd < 0) {
                rc = -errno;
@@ -686,7 +685,7 @@ rcyn_server_create(
        }
 
        /* create the check server socket */
-       check_socket_spec = check_socket_spec ?: rcyn_default_check_socket_spec;
+       check_socket_spec = rcyn_get_socket_check(check_socket_spec);
        srv->check.fd = socket_open(check_socket_spec, 1);
        if (srv->check.fd < 0) {
                rc = -errno;
@@ -705,7 +704,7 @@ rcyn_server_create(
        }
 
        /* create the agent server socket */
-       agent_socket_spec = agent_socket_spec ?: rcyn_default_agent_socket_spec;
+       agent_socket_spec = rcyn_get_socket_agent(agent_socket_spec);
        srv->agent.fd = socket_open(agent_socket_spec, 1);
        if (srv->agent.fd < 0) {
                rc = -errno;