+ int err;
+ char portstr[6];
+ struct evutil_addrinfo hints, *res = NULL;
+
+ snprintf (portstr, sizeof(portstr), "%d", port);
+ memset (&hints, 0, sizeof(struct evutil_addrinfo));
+ //hints.ai_family = AF_UNSPEC; /* v4 or v6. */
+ hints.ai_family = AF_INET; /* FIXME: v4 only, while debuging */
+ hints.ai_flags = AI_ADDRCONFIG;
+ switch (conn->type)
+ {
+ case RS_CONN_TYPE_NONE:
+ rs_conn_err_push_fl (conn, RSE_INVALID_CONN, __FILE__, __LINE__, NULL);
+ return NULL;
+ case RS_CONN_TYPE_TCP:
+ case RS_CONN_TYPE_TLS:
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_protocol = IPPROTO_TCP;
+ break;
+ case RS_CONN_TYPE_UDP:
+ case RS_CONN_TYPE_DTLS:
+ hints.ai_socktype = SOCK_DGRAM;
+ hints.ai_protocol = IPPROTO_UDP;
+ break;
+ }
+ err = evutil_getaddrinfo (hostname, portstr, &hints, &res);
+ if (err)
+ rs_conn_err_push_fl (conn, RSE_BADADDR, __FILE__, __LINE__,
+ " %s:%d: bad host name or port (%s)",
+ hostname, port, evutil_gai_strerror(err));
+ return res; /* Simply use first result. */