afb-ws-client: Improve direct URI 53/23553/1
authorJose Bollo <jose.bollo@iot.bzh>
Tue, 7 Jan 2020 09:28:27 +0000 (10:28 +0100)
committerJose Bollo <jose.bollo@iot.bzh>
Tue, 7 Jan 2020 13:25:23 +0000 (14:25 +0100)
The direct connection URI was expecting a slash after the port
for "tcp:" URI.  This slash is not needed because it does not
carry any meaning. This change implements the ability to set
or not the path of URI.

Bug-AGL: SPEC-3094

Change-Id: I3d4c350f4e917759cbf82ccc0d261aa420f6f88a
Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
src/afb-ws-client.c

index 04458e7..fba85ff 100644 (file)
@@ -443,12 +443,12 @@ static int get_socket_inet(const char *uri)
        struct addrinfo hint, *rai, *iai;
 
        /* scan the uri */
        struct addrinfo hint, *rai, *iai;
 
        /* scan the uri */
-       api = strrchr(uri, '/');
        service = strrchr(uri, ':');
        service = strrchr(uri, ':');
-       if (api == NULL || service == NULL || api < service) {
+       if (service == NULL) {
                errno = EINVAL;
                return -1;
        }
                errno = EINVAL;
                return -1;
        }
+       api = strchrnul(service, '/');
        host = strndupa(uri, service++ - uri);
        service = strndupa(service, api - service);
 
        host = strndupa(uri, service++ - uri);
        service = strndupa(service, api - service);
 
@@ -488,6 +488,9 @@ static int get_socket(const char *uri)
        if (0 == strncmp(uri, "unix:", 5))
                /* unix socket */
                fd = get_socket_unix(uri + 5);
        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);
        else
                /* inet socket */
                fd = get_socket_inet(uri);