- 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. */
-}
-
-static struct rs_peer *
-_peer_new (struct rs_connection *conn, const char *hostname, int port)
-{
- struct rs_peer *p;
- struct evutil_addrinfo *addr;
-
- addr = _resolv (conn, hostname, port);
- if (!addr)
- return NULL;
-
- p = (struct rs_peer *) malloc (sizeof(*p));
- if (p)
- {
- memset (p, 0, sizeof(struct rs_peer));
- p->conn = conn;
- p->fd = -1;
- p->addr = addr;
- p->next = conn->peers;
- if (conn->peers)
- conn->peers->next = p;
- else
- conn->peers = p;
- }
- else
- {
- evutil_freeaddrinfo (addr);
- rs_conn_err_push_fl (conn, RSE_NOMEM, __FILE__, __LINE__, NULL);
- }
- return p;
+ return err_create (RSE_BADADDR, __FILE__, __LINE__,
+ "%s:%s: bad host name or service name (%s)",
+ hostname, service, evutil_gai_strerror(err));
+ *addr = res; /* Simply use first result. */
+ return NULL;