summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2017-12-05 17:29:24 +0100
committerJosé Bollo <jose.bollo@iot.bzh>2017-12-05 17:29:24 +0100
commitadb89e71f1c366b0cabdf9e04aaed60b84a96f0e (patch)
treeab47e39e9d04b5b611d0431993d9e172879735e3
parentddeda4952121007e8b0a7207528901be911ce2b4 (diff)
afb-api-ws: Make weak ws-client by default (to be fixed)
The case of unicens service that can be here or not creates problem to the binding 4a when the service is not here. This commits makes the requirement of ws-client socket optional. This unblocks the situation but need to be fixed later. Bug-AGL: SPEC-1151 Change-Id: I569fa781c003492a4c6a7ad84c5b140ecdb05b65 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r--src/afb-api-ws.c14
-rw-r--r--src/afb-api-ws.h4
-rw-r--r--src/main.c2
3 files changed, 16 insertions, 4 deletions
diff --git a/src/afb-api-ws.c b/src/afb-api-ws.c
index 7e0adb7e..1a463587 100644
--- a/src/afb-api-ws.c
+++ b/src/afb-api-ws.c
@@ -203,7 +203,7 @@ static int api_ws_socket(const char *path, int server)
/**********************************************************************************/
-int afb_api_ws_add_client(const char *path, struct afb_apiset *apiset)
+int afb_api_ws_add_client(const char *path, struct afb_apiset *apiset, int strong)
{
struct api_ws *apiws;
struct afb_stub_ws *stubws;
@@ -238,7 +238,17 @@ error3:
error2:
free(apiws);
error:
- return -1;
+ return -!!strong;
+}
+
+int afb_api_ws_add_client_strong(const char *path, struct afb_apiset *apiset)
+{
+ return afb_api_ws_add_client(path, apiset, 1);
+}
+
+int afb_api_ws_add_client_weak(const char *path, struct afb_apiset *apiset)
+{
+ return afb_api_ws_add_client(path, apiset, 0);
}
static int api_ws_server_accept_client(struct api_ws *apiws, int fd)
diff --git a/src/afb-api-ws.h b/src/afb-api-ws.h
index 44dedca3..fadb3cb5 100644
--- a/src/afb-api-ws.h
+++ b/src/afb-api-ws.h
@@ -20,7 +20,9 @@
struct afb_apiset;
-extern int afb_api_ws_add_client(const char *path, struct afb_apiset *apiset);
+extern int afb_api_ws_add_client(const char *path, struct afb_apiset *apiset, int strong);
+extern int afb_api_ws_add_client_strong(const char *path, struct afb_apiset *apiset);
+extern int afb_api_ws_add_client_weak(const char *path, struct afb_apiset *apiset);
extern int afb_api_ws_add_server(const char *path, struct afb_apiset *apiset);
diff --git a/src/main.c b/src/main.c
index 150b7810..df35d88d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -593,7 +593,7 @@ static void start(int signum)
afb_debug("start-load");
apiset_start_list(config->so_bindings, afb_api_so_add_binding, "the binding");
apiset_start_list(config->dbus_clients, afb_api_dbus_add_client, "the afb-dbus client");
- apiset_start_list(config->ws_clients, afb_api_ws_add_client, "the afb-websocket client");
+ apiset_start_list(config->ws_clients, afb_api_ws_add_client_weak, "the afb-websocket client");
apiset_start_list(config->ldpaths, afb_api_so_add_pathset_fails, "the binding path set");
apiset_start_list(config->weak_ldpaths, afb_api_so_add_pathset_nofails, "the weak binding path set");