/*
- * Copyright (C) 2016, 2017, 2018 "IoT.bzh"
+ * Copyright (C) 2015-2020 "IoT.bzh"
* Author: José Bollo <jose.bollo@iot.bzh>
*
* Licensed under the Apache License, Version 2.0 (the "License");
struct addrinfo hint, *rai, *iai;
/* scan the uri */
- api = strrchr(uri, '/');
service = strrchr(uri, ':');
- if (api == NULL || service == NULL || api < service) {
+ if (service == NULL) {
errno = EINVAL;
return -1;
}
+ api = strchrnul(service, '/');
host = strndupa(uri, service++ - uri);
service = strndupa(service, api - service);
if (0 == strncmp(uri, "unix:", 5))
/* unix socket */
fd = get_socket_unix(uri + 5);
+ else if (0 == strncmp(uri, "tcp:", 4))
+ /* unix socket */
+ fd = get_socket_inet(uri + 4);
else
/* inet socket */
fd = get_socket_inet(uri);
}
return fd;
}
+
/*
* Establish a websocket-like client connection to the API of 'uri' and if successful
- * instanciate a client afb_proto_ws websocket for this API using 'itf' and 'closure'.
+ * instantiate a client afb_proto_ws websocket for this API using 'itf' and 'closure'.
* (see afb_proto_ws_create_client).
* The systemd event loop 'eloop' is used to handle the websocket.
- * Returns NULL in case of failure with errno set appriately.
+ * Returns NULL in case of failure with errno set appropriately.
*/
struct afb_proto_ws *afb_ws_client_connect_api(struct sd_event *eloop, const char *uri, struct afb_proto_ws_client_itf *itf, void *closure)
{