X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-api-ws.c;h=8069da22bc3f67796cc8a8f94c4b240497335416;hb=2991a2564bc5e21b04dcb3157ce38804080c0056;hp=6d8506c1da99b50e8052f74c3200e2dc83167ab4;hpb=7b6940f1524cac6172e71529a989424ff18fb850;p=src%2Fapp-framework-binder.git diff --git a/src/afb-api-ws.c b/src/afb-api-ws.c index 6d8506c1..8069da22 100644 --- a/src/afb-api-ws.c +++ b/src/afb-api-ws.c @@ -50,6 +50,12 @@ struct api_ws_server /*** C L I E N T ***/ /******************************************************************************/ +static struct fdev *reopen_client(void *closure) +{ + const char *uri = closure; + return afb_socket_open_fdev(uri, 0); +} + int afb_api_ws_add_client(const char *uri, struct afb_apiset *declare_set, struct afb_apiset *call_set, int strong) { struct afb_stub_ws *stubws; @@ -73,8 +79,16 @@ int afb_api_ws_add_client(const char *uri, struct afb_apiset *declare_set, struc ERROR("can't setup client ws service to %s", uri); fdev_unref(fdev); } else { - if (afb_stub_ws_client_add(stubws, declare_set) >= 0) + if (afb_stub_ws_client_add(stubws, declare_set) >= 0) { +#if 1 + /* it is asserted here that uri is never released */ + afb_stub_ws_client_robustify(stubws, reopen_client, (void*)uri, NULL); +#else + /* it is asserted here that uri is released, so use a copy */ + afb_stub_ws_client_robustify(stubws, reopen_client, strdup(uri), free); +#endif return 0; + } ERROR("can't add the client to the apiset for service %s", uri); afb_stub_ws_unref(stubws); }