Heartbeat context is not freed automatically by the library
[silc.git] / lib / silcutil / silcsockconn.c
index ad07a2b6cbb9943c8b9cef5b1fe1d32fcd4601a4..25a56fe1aa658de5398f2502063c1da450cea65a 100644 (file)
@@ -73,7 +73,6 @@ void silc_socket_free(SilcSocketConnection sock)
     silc_buffer_free(sock->outbuf);
     if (sock->hb) {
       silc_schedule_task_del(sock->hb->schedule, sock->hb->hb_task);
-      silc_free(sock->hb->hb_context);
       silc_free(sock->hb);
     }
 
@@ -130,7 +129,6 @@ void silc_socket_set_heartbeat(SilcSocketConnection sock,
 {
   if (sock->hb) {
     silc_schedule_task_del(schedule, sock->hb->hb_task);
-    silc_free(sock->hb->hb_context);
     silc_free(sock->hb);
   }
 
@@ -184,6 +182,7 @@ static void *silc_socket_host_lookup_start(void *context)
 {
   SilcSocketHostLookup lookup = (SilcSocketHostLookup)context;
   SilcSocketConnection sock = lookup->sock;
+  SilcSchedule schedule = lookup->schedule;
 
   if (lookup->port)
     sock->port = silc_net_get_remote_port(sock->sock);
@@ -192,10 +191,10 @@ static void *silc_socket_host_lookup_start(void *context)
   if (!sock->hostname && sock->ip)
     sock->hostname = strdup(sock->ip);
 
-  silc_schedule_task_add(lookup->schedule, sock->sock,
+  silc_schedule_task_add(schedule, sock->sock,
                         silc_socket_host_lookup_finish, lookup, 0, 1,
                         SILC_TASK_TIMEOUT, SILC_TASK_PRI_NORMAL);
-  silc_schedule_wakeup(lookup->schedule);
+  silc_schedule_wakeup(schedule);
 
   return NULL;
 }