Implement sock_address_list_create2 routine.

This routine takes socket address in the form of [host:]port and creates array of SockAddress for it.

Change-Id: Ib2d4c1035d109d9d3df100961c4eec728d15e485
diff --git a/sockets.c b/sockets.c
index 72a388a..ef35220 100644
--- a/sockets.c
+++ b/sockets.c
@@ -802,6 +802,33 @@
     return list;
 }
 
+SockAddress**
+sock_address_list_create2(const char* host_and_port, unsigned flags )
+{
+    char host_name[512];
+    const char* actual_host_name = "localhost";
+    // Parse host and port name.
+    const char* port_name = strchr(host_and_port, ':');
+    if (port_name != NULL) {
+        int to_copy = MIN(sizeof(host_name)-1, port_name - host_and_port);
+        if (to_copy != 0) {
+            memcpy(host_name, host_and_port, to_copy);
+            host_name[to_copy] = '\0';
+            actual_host_name = host_name;
+            port_name++;
+        } else {
+            return NULL;
+        }
+    } else {
+        port_name = host_and_port;
+    }
+    // Make sure that port_name is not empty.
+    if (port_name[0] == '\0') {
+        return NULL;
+    }
+    return sock_address_list_create(actual_host_name, port_name, flags);
+}
+
 void
 sock_address_list_free( SockAddress**  list )
 {