X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Funix%2Fsilcunixnet.c;h=e0befdc19979ca325a83cd39b6da9015e34a28f8;hb=52e57c880aba9c5e89f59d962eb9af75670b76e0;hp=20a55ebbc85ddbe9d079fd7a6fbfe99604e623d7;hpb=97294453585066bfcd88769c6e82f03158bd2ad0;p=silc.git diff --git a/lib/silcutil/unix/silcunixnet.c b/lib/silcutil/unix/silcunixnet.c index 20a55ebb..e0befdc1 100644 --- a/lib/silcutil/unix/silcunixnet.c +++ b/lib/silcutil/unix/silcunixnet.c @@ -164,8 +164,8 @@ silc_net_tcp_create_listener(const char **local_ip_addr, /* Bind to local addresses */ for (i = 0; i < local_ip_count; i++) { - SILC_LOG_DEBUG(("Binding to local address %s", - local_ip_addr ? local_ip_addr[i] : ipany)); + SILC_LOG_DEBUG(("Binding to local address %s:%d", + local_ip_addr ? local_ip_addr[i] : ipany, port)); /* Set sockaddr for server */ if (!silc_net_set_sockaddr(&server, @@ -591,6 +591,7 @@ static void silc_net_connect_wait_stream(SilcSocketStreamStatus status, SilcStream stream, void *context) { SilcNetConnect conn = context; + conn->sop = NULL; conn->stream_status = status; conn->stream = stream; SILC_FSM_CALL_CONTINUE(&conn->fsm); @@ -627,20 +628,20 @@ SILC_FSM_STATE(silc_net_connect_st_connected) } #if defined(ECONNREFUSED) - if (errno == ECONNREFUSED) + if (opt == ECONNREFUSED) conn->status = SILC_NET_CONNECTION_REFUSED; #endif /* ECONNREFUSED */ #if defined(ETIMEDOUT) - if (errno == ETIMEDOUT) + if (opt == ETIMEDOUT) conn->status = SILC_NET_CONNECTION_TIMEOUT; #endif /* ETIMEDOUT */ #if defined(ENETUNREACH) - if (errno == ENETUNREACH) + if (opt == ENETUNREACH) conn->status = SILC_NET_HOST_UNREACHABLE; #endif /* ENETUNREACH */ /** Connecting failed */ - SILC_LOG_DEBUG(("Connecting failed")); + SILC_LOG_DEBUG(("Connecting failed, error %s", strerror(opt))); silc_fsm_next(fsm, silc_net_connect_st_finish); return SILC_FSM_CONTINUE; } @@ -650,8 +651,7 @@ SILC_FSM_STATE(silc_net_connect_st_connected) /** Connection created */ silc_fsm_next(fsm, silc_net_connect_st_stream); SILC_FSM_CALL((conn->sop = silc_socket_tcp_stream_create( - conn->sock, FALSE, FALSE, - schedule, + conn->sock, TRUE, FALSE, schedule, silc_net_connect_wait_stream, conn))); } @@ -677,11 +677,6 @@ SILC_FSM_STATE(silc_net_connect_st_stream) return SILC_FSM_CONTINUE; } - /* Set stream information */ - silc_socket_stream_set_info(conn->stream, - !silc_net_is_ip(conn->remote) ? conn->remote : - conn->ip_addr, conn->ip_addr, conn->port); - /** Stream created successfully */ SILC_LOG_DEBUG(("Connected successfully, sock %d", conn->sock)); conn->status = SILC_NET_OK; @@ -698,8 +693,6 @@ SILC_FSM_STATE(silc_net_connect_st_finish) conn->callback(conn->status, conn->stream, conn->context); if (conn->op) silc_async_free(conn->op); - if (conn->sop) - silc_async_free(conn->sop); } return SILC_FSM_FINISH; @@ -711,8 +704,10 @@ static void silc_net_connect_abort(SilcAsyncOperation op, void *context) conn->aborted = TRUE; /* Abort underlaying stream creation too */ - if (conn->sop) + if (conn->sop) { silc_async_abort(conn->sop, NULL, NULL); + conn->sop = NULL; + } } static void silc_net_connect_destructor(SilcFSM fsm, void *fsm_context,