X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-api-ws.c;h=0e4d1d050bbc97260914bfe073be7ef7fd603ef9;hb=3535d4cb73628c720da1bf74627ded2aec6f2ca1;hp=07c8202fbd07a1c2f394c6c0f2059591988e2afd;hpb=8406a51db98b563a4562f26de8338efc0478aff2;p=src%2Fapp-framework-binder.git diff --git a/src/afb-api-ws.c b/src/afb-api-ws.c index 07c8202f..0e4d1d05 100644 --- a/src/afb-api-ws.c +++ b/src/afb-api-ws.c @@ -73,7 +73,7 @@ static struct api_ws *api_ws_make(const char *path) while (length && path[length - 1] != '/' && path[length - 1] != ':') length = length - 1; api->api = &api->path[length]; - if (api->api == NULL || !afb_api_is_valid_name(api->api)) { + if (api->api == NULL || !afb_api_is_valid_name(api->api, 1)) { errno = EINVAL; goto error2; } @@ -169,7 +169,6 @@ static int api_ws_socket_inet(const char *path, int server) } freeaddrinfo(rai); return -1; - } static int api_ws_socket(const char *path, int server) @@ -204,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; @@ -239,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) @@ -324,6 +333,12 @@ int afb_api_ws_add_server(const char *path, struct afb_apiset *apiset) if (apiws == NULL) goto error; + /* check api name */ + if (!afb_apiset_lookup(apiset, apiws->api, 1)) { + ERROR("Can't provide ws-server for %s: API %s doesn't exist", path, apiws->api); + goto error2; + } + /* connect for serving */ rc = api_ws_server_connect(apiws); if (rc < 0)