X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilcfdstream.c;h=67ad3269c7f514d2e1ee1f5ccbc59b81877ee92c;hb=9781db929f51eec844277fbe28780faaea35e53f;hp=cbd837aa9c07f4a7d5289cc8733b91bd431f1406;hpb=03df183a5ada5bad0eed82b78d93ca6f4fd51213;p=silc.git diff --git a/lib/silcutil/silcfdstream.c b/lib/silcutil/silcfdstream.c index cbd837aa..67ad3269 100644 --- a/lib/silcutil/silcfdstream.c +++ b/lib/silcutil/silcfdstream.c @@ -233,10 +233,12 @@ SilcBool silc_fd_stream_close(SilcStream stream) if (fd_stream->fd1 > 0) { silc_file_close(fd_stream->fd1); silc_schedule_unset_listen_fd(fd_stream->schedule, fd_stream->fd1); + silc_schedule_task_del_by_fd(fd_stream->schedule, fd_stream->fd1); } if (fd_stream->fd2 > 0 && fd_stream->fd2 != fd_stream->fd1) { silc_file_close(fd_stream->fd2); silc_schedule_unset_listen_fd(fd_stream->schedule, fd_stream->fd2); + silc_schedule_task_del_by_fd(fd_stream->schedule, fd_stream->fd2); } return TRUE; @@ -246,20 +248,16 @@ SilcBool silc_fd_stream_close(SilcStream stream) void silc_fd_stream_destroy(SilcStream stream) { - SilcFDStream fd_stream = stream; - silc_fd_stream_close(stream); - silc_schedule_task_del_by_fd(fd_stream->schedule, fd_stream->fd1); - silc_schedule_task_del_by_fd(fd_stream->schedule, fd_stream->fd2); silc_free(stream); } /* Sets stream notification callback for the stream */ -void silc_fd_stream_notifier(SilcStream stream, - SilcSchedule schedule, - SilcStreamNotifier callback, - void *context) +SilcBool silc_fd_stream_notifier(SilcStream stream, + SilcSchedule schedule, + SilcStreamNotifier callback, + void *context) { SilcFDStream fd_stream = stream; @@ -288,7 +286,11 @@ void silc_fd_stream_notifier(SilcStream stream, } else { silc_schedule_unset_listen_fd(fd_stream->schedule, fd_stream->fd1); silc_schedule_unset_listen_fd(fd_stream->schedule, fd_stream->fd2); + silc_schedule_task_del_by_fd(fd_stream->schedule, fd_stream->fd1); + silc_schedule_task_del_by_fd(fd_stream->schedule, fd_stream->fd2); } + + return TRUE; } /* Return schedule */