X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcske%2Fsilcconnauth.c;fp=lib%2Fsilcske%2Fsilcconnauth.c;h=dba6ace132ac46de1b641f105a3335f9345b4d18;hb=516f5551371ace2646140a435bb6b9d9a6f854d0;hp=e7b41c55e6b6b36f042db9d3b221b44ba45b8b0e;hpb=b3bc1d0b9cfd8a8c921ac01a82da60daef73a6a1;p=silc.git diff --git a/lib/silcske/silcconnauth.c b/lib/silcske/silcconnauth.c index e7b41c55..dba6ace1 100644 --- a/lib/silcske/silcconnauth.c +++ b/lib/silcske/silcconnauth.c @@ -384,8 +384,13 @@ SILC_FSM_STATE(silc_connauth_st_initiator_failure) SILC_PUT32_MSB(SILC_AUTH_FAILED, error); silc_packet_send(connauth->ske->stream, SILC_PACKET_FAILURE, 0, error, 4); + silc_packet_stream_unlink(connauth->ske->stream, + &silc_connauth_stream_cbs, connauth); + silc_schedule_task_del_by_context(silc_fsm_get_schedule(fsm), connauth); + /* Call completion callback */ connauth->completion(connauth, FALSE, connauth->context); + return SILC_FSM_FINISH; } silc_packet_stream_unlink(connauth->ske->stream, @@ -654,13 +659,13 @@ SILC_FSM_STATE(silc_connauth_st_responder_success) SILC_PUT32_MSB(SILC_AUTH_OK, tmp); silc_packet_send(connauth->ske->stream, SILC_PACKET_SUCCESS, 0, tmp, 4); - /* Call completion callback */ - connauth->completion(connauth, TRUE, connauth->context); - silc_packet_stream_unlink(connauth->ske->stream, &silc_connauth_stream_cbs, connauth); silc_schedule_task_del_by_context(silc_fsm_get_schedule(fsm), connauth); + /* Call completion callback */ + connauth->completion(connauth, TRUE, connauth->context); + return SILC_FSM_FINISH; } @@ -676,8 +681,14 @@ SILC_FSM_STATE(silc_connauth_st_responder_failure) SILC_PUT32_MSB(SILC_AUTH_FAILED, error); silc_packet_send(connauth->ske->stream, SILC_PACKET_FAILURE, 0, error, 4); + silc_packet_stream_unlink(connauth->ske->stream, + &silc_connauth_stream_cbs, connauth); + silc_schedule_task_del_by_context(silc_fsm_get_schedule(fsm), connauth); + /* Call completion callback */ connauth->completion(connauth, FALSE, connauth->context); + + return SILC_FSM_FINISH; } silc_packet_stream_unlink(connauth->ske->stream,