X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilcsockconn.c;h=a49422487a0329c1262989edbe2ff790fce95248;hp=3ae1a1e8e0dbec5053f5dc2de51de5434ec9ad82;hb=413da0f8686910f5e627393157566ae729ca99c4;hpb=7431bd61b7149a1b25ccd969cfbb05316ff9fa59 diff --git a/lib/silcutil/silcsockconn.c b/lib/silcutil/silcsockconn.c index 3ae1a1e8..a4942248 100644 --- a/lib/silcutil/silcsockconn.c +++ b/lib/silcutil/silcsockconn.c @@ -103,6 +103,10 @@ SILC_TASK_CALLBACK(silc_socket_heartbeat) if (!hb->heartbeat) return; + if (SILC_IS_DISCONNECTING(hb->sock) || + SILC_IS_DISCONNECTED(hb->sock)) + return; + if (hb->hb_callback) hb->hb_callback(hb->sock, hb->hb_context); @@ -192,8 +196,8 @@ SILC_TASK_CALLBACK(silc_socket_host_lookup_finish) is cancelled also and we will not call the final callback. */ if (lookup->sock->users == 1) { SILC_LOG_DEBUG(("Async host lookup was cancelled")); - silc_free(lookup); silc_socket_free(lookup->sock); + silc_free(lookup); return; } @@ -250,6 +254,10 @@ void silc_socket_host_lookup(SilcSocketConnection sock, SILC_LOG_DEBUG(("Performing async host lookup")); + if (SILC_IS_DISCONNECTING(sock) || + SILC_IS_DISCONNECTED(sock)) + return; + lookup = silc_calloc(1, sizeof(*lookup)); lookup->sock = silc_socket_dup(sock); /* Increase reference counter */ lookup->callback = callback;