- servAddr.sin_family= h->h_addrtype;
- memcpy((char *) &servAddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length);
- servAddr.sin_port = htons(ptr->hosts[server_key].port);
+ /* Create the socket */
+ if ((ptr->hosts[server_key].fd= socket(AF_INET, SOCK_DGRAM, 0)) < 0)
+ {
+ ptr->cached_errno= errno;
+ return MEMCACHED_CONNECTION_SOCKET_CREATE_FAILURE;
+ }
+ }
+
+ return MEMCACHED_SUCCESS;
+}
+
+static memcached_return tcp_connect(memcached_st *ptr, unsigned int server_key)
+{
+ if (ptr->hosts[server_key].fd == -1)
+ {
+ /* Old connection junk still is in the structure */
+ WATCHPOINT_ASSERT(ptr->hosts[server_key].stack_responses == 0);
+
+ if (ptr->hosts[server_key].servAddr.sin_family == 0)
+ {
+ memcached_return rc;
+
+ rc= set_hostinfo(&ptr->hosts[server_key]);
+ if (rc != MEMCACHED_SUCCESS)
+ return rc;
+ }