X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=apps%2Fsilcd%2Fserver.c;h=c2df082c61118703639b85fca1f9ad34de233bfd;hp=52bc4b702779e89c6caf873c2cfa3e9cce345fc6;hb=8bb22be757768c18af7a5381b3b18d4983dfa9d4;hpb=35f90f6e65d24d42ba1988ff91f2842fe9c386b5 diff --git a/apps/silcd/server.c b/apps/silcd/server.c index 52bc4b70..c2df082c 100644 --- a/apps/silcd/server.c +++ b/apps/silcd/server.c @@ -201,7 +201,7 @@ static void silc_server_packet_eos(SilcPacketEngine engine, if (server->router_conn && server->router_conn->sock == stream && !server->router && server->standalone) { - if (idata->sconn->callback) + if (idata->sconn && idata->sconn->callback) (*idata->sconn->callback)(server, NULL, idata->sconn->callback_context); silc_server_create_connections(server); silc_server_free_sock_user_data(server, stream, NULL); @@ -214,7 +214,7 @@ static void silc_server_packet_eos(SilcPacketEngine engine, server->backup_closed = TRUE; } - if (idata->sconn->callback) + if (idata->sconn && idata->sconn->callback) (*idata->sconn->callback)(server, NULL, idata->sconn->callback_context); silc_server_free_sock_user_data(server, stream, NULL); } @@ -243,7 +243,7 @@ SILC_TASK_CALLBACK(silc_server_packet_error_timeout) server->backup_closed = TRUE; } - if (idata->sconn->callback) + if (idata->sconn && idata->sconn->callback) (*idata->sconn->callback)(server, NULL, idata->sconn->callback_context); silc_server_free_sock_user_data(server, stream, NULL); } @@ -1599,9 +1599,9 @@ static void silc_server_ke_completed(SilcSKE ske, SilcSKEStatus status, { SilcPacketStream sock = context; SilcUnknownEntry entry = silc_packet_get_context(sock); - SilcServerConnection sconn = entry->data.sconn; - SilcServer server = entry->server; - SilcServerConfigRouter *conn = sconn->conn.ref_ptr; + SilcServerConnection sconn; + SilcServer server; + SilcServerConfigRouter *conn; SilcAuthMethod auth_meth = SILC_AUTH_NONE; void *auth_data = NULL; SilcUInt32 auth_data_len = 0; @@ -1610,10 +1610,13 @@ static void silc_server_ke_completed(SilcSKE ske, SilcSKEStatus status, SilcHmac hmac_send, hmac_receive; SilcHash hash; - SILC_LOG_DEBUG(("Connection %p, SKE completed, entry %p", sconn, entry)); - + server = entry->server; + sconn = entry->data.sconn; + conn = sconn->conn.ref_ptr; entry->op = NULL; + SILC_LOG_DEBUG(("Connection %p, SKE completed, entry %p", sconn, entry)); + if (status != SILC_SKE_STATUS_OK) { /* SKE failed */ SILC_LOG_ERROR(("Error (%s) during Key Exchange protocol with %s (%s)", @@ -2818,6 +2821,7 @@ static void silc_server_accept_new_connection(SilcNetStatus status, entry->port = port; entry->server = server; entry->data.conn_type = SILC_CONN_UNKNOWN; + entry->data.status |= SILC_IDLIST_STATUS_LOCAL; silc_packet_set_context(packet_stream, entry); SILC_LOG_DEBUG(("Created unknown connection %p", entry));