- int s;
- struct rs_peer *p;
-
- if (conn->active_peer)
- return RSE_OK;
- p = conn->peers;
- if (!p)
- return rs_conn_err_push_fl (conn, RSE_NOPEER, __FILE__, __LINE__, NULL);
-
- s = socket (p->addr->ai_family, p->addr->ai_socktype, p->addr->ai_protocol);
- if (s < 0)
- return rs_conn_err_push_fl (conn, RSE_SOME_ERROR, __FILE__, __LINE__,
- strerror (errno));
-#if 0 /* let librevent do this in rs_packet_send() */
- if (connect (s, p->addr->ai_addr, p->addr->ai_addrlen))
- {
- /* TODO: handle nonblocking sockets (EINTR, EAGAIN). */
- EVUTIL_CLOSESOCKET (s);
- return rs_conn_err_push_fl (conn, RSE_SOME_ERROR, __FILE__, __LINE__,
- strerror (errno));
- }
-#endif
-
- if (!conn->evb)
- {
-#if defined (DEBUG)
- event_enable_debug_mode ();
-#endif
- conn->evb = event_base_new ();
- }
-
- if (!conn->evb)
- {
- EVUTIL_CLOSESOCKET (s);
- return rs_conn_err_push_fl (conn, RSE_EVENT, __FILE__, __LINE__,
- "event_base_new");
- }
-
- p->s = s;
- conn->active_peer = p;
- return RSE_OK;
+ return rs_err_ctx_push_fl (ctx, RSE_NOSYS, __FILE__, __LINE__, NULL);