common/transport: address is const for resolve.
authorKrisztian Litkey <krisztian.litkey@intel.com>
Thu, 3 May 2012 08:14:36 +0000 (11:14 +0300)
committerKrisztian Litkey <krisztian.litkey@intel.com>
Thu, 3 May 2012 08:14:36 +0000 (11:14 +0300)
src/common/tcp-transport.c
src/common/transport.c
src/common/transport.h
src/common/udp-transport.c
src/console-client/client.c
src/plugins/plugin-console.c

index c50486f..65424f0 100644 (file)
@@ -33,7 +33,7 @@ static void tcp_recv_cb(mrp_mainloop_t *ml, mrp_io_watch_t *w, int fd,
 static int tcp_disconnect(mrp_transport_t *mt);
 static int open_socket(tcp_t *t, int family);
 
-static socklen_t tcp_resolve(char *str, void *addr, socklen_t size)
+static socklen_t tcp_resolve(const char *str, void *addr, socklen_t size)
 {
     struct addrinfo *ai, hints;
     char             node[512], *port;
index a92588e..dc01f85 100644 (file)
@@ -72,8 +72,8 @@ mrp_transport_t *mrp_transport_create(mrp_mainloop_t *ml, const char *type,
 }
 
 
-socklen_t mrp_transport_resolve(mrp_transport_t *t, char *str, void *addr,
-                               socklen_t size)
+socklen_t mrp_transport_resolve(mrp_transport_t *t, const char *str,
+                               void *addr, socklen_t size)
 {
     mrp_transport_descr_t *d;
     char                  *p, type[32];
index db74b10..d51d24c 100644 (file)
@@ -111,7 +111,7 @@ typedef struct {
     const char          *type;           /* transport type */
     size_t               size;           /* full transport struct size */
     mrp_transport_req_t  req;            /* transport requests */
-    socklen_t          (*resolve)(char *str, void *addr, socklen_t size);
+    socklen_t          (*resolve)(const char *str, void *addr, socklen_t size);
     mrp_list_hook_t      hook;           /* to list of registered transports */
 } mrp_transport_descr_t;
 
@@ -255,7 +255,7 @@ mrp_transport_t *mrp_transport_create(mrp_mainloop_t *ml, const char *type,
                                      void *user_data);
 
 /** Resolve an address string to a transport-specific address. */
-socklen_t mrp_transport_resolve(mrp_transport_t *t, char *str,
+socklen_t mrp_transport_resolve(mrp_transport_t *t, const char *str,
                                void *addr, socklen_t size);
 
 /** Bind a given transport to a transport-specific address. */
index d2dd7ca..8a08c44 100644 (file)
@@ -32,7 +32,7 @@ static int udp_disconnect(mrp_transport_t *mu);
 static int open_socket(udp_t *u, int family);
 
 
-static socklen_t udp_resolve(char *str, void *addr, socklen_t size)
+static socklen_t udp_resolve(const char *str, void *addr, socklen_t size)
 {
     struct addrinfo *ai, hints;
     char             node[512], *port;
index 6ec7368..d71831b 100644 (file)
@@ -17,7 +17,7 @@
 #define client_error mrp_log_error
 
 #define DEFAULT_PROMPT  "murphy> "
-#define DEFAULT_CONSOLE "127.0.0.1:3000"
+#define DEFAULT_CONSOLE "tcp:127.0.0.1:3000"
 
 static void input_process_cb(char *input);
 
index f17d055..64a9ad6 100644 (file)
@@ -41,26 +41,18 @@ typedef struct {
 
 static int console_listen(const char *address)
 {
-    struct addrinfo *ai;
-    char             node[512], *port;
-    int              sock, error, on;
+    struct sockaddr addr;
+    socklen_t       addrlen;
+    int             sock, on;
 
-    strncpy(node, address, sizeof(node) - 1);
-    node[sizeof(node) - 1] = '\0';
+    addrlen = mrp_transport_resolve(NULL, address, &addr, sizeof(addr));
 
-    if ((port = strrchr(node, ':')) == NULL) {
+    if (!addrlen) {
        console_error("invalid console address '%s'.", address);
        return FALSE;
     }
-    *port++ = '\0';
-
-    if ((error = getaddrinfo(node, port, NULL, &ai)) != 0) {
-       console_error("invalid console address '%s' (%s).",
-                     address, gai_strerror(error));
-       return FALSE;
-    }
     
-    if ((sock = socket(ai->ai_family, SOCK_STREAM, 0)) < 0) {
+    if ((sock = socket(addr.sa_family, SOCK_STREAM, 0)) < 0) {
        console_error("failed to create console socket (%d: %s).",
                      errno, strerror(errno));
        goto fail;
@@ -69,7 +61,7 @@ static int console_listen(const char *address)
     on = 1;
     setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
 
-    if (bind(sock, ai->ai_addr, ai->ai_addrlen) != 0) {
+    if (bind(sock, &addr, addrlen) != 0) {
        console_error("failed to bind to address '%s' (%d: %s).",
                      address, errno, strerror(errno));
        goto fail;
@@ -81,16 +73,12 @@ static int console_listen(const char *address)
        goto fail;
     }
 
-    freeaddrinfo(ai);
     return sock;
 
  fail:
     if (sock >= 0)
        close(sock);
-
-    if (ai != NULL)
-       freeaddrinfo(ai);
-
+    
     return FALSE;
 }
 
@@ -307,7 +295,7 @@ static void console_exit(mrp_plugin_t *plugin)
 
 
 static mrp_plugin_arg_t console_args[] = {
-    MRP_PLUGIN_ARGIDX(ARG_ADDRESS, STRING, "address", "127.0.0.1:3000"),
+    MRP_PLUGIN_ARGIDX(ARG_ADDRESS, STRING, "address", "tcp:127.0.0.1:3000"),
 };
 
 MURPHY_REGISTER_CORE_PLUGIN("console",