updates.
[silc.git] / lib / silccore / silcprotocol.c
index 89d6244300a31237db25361c65a1cfd4c00f7446..9eb50898d1fdf4b1ec6351afa8e3d18b3dd96403 100644 (file)
@@ -92,6 +92,7 @@ void silc_protocol_alloc(SilcProtocolType type, SilcProtocol *new_protocol,
 
   if (!protocol) {
     SILC_LOG_ERROR(("Requested protocol does not exists"));
+    *new_protocol = NULL;
     return;
   }
 
@@ -143,3 +144,14 @@ void silc_protocol_execute_final(void *qptr, int type,
 
   protocol->final_callback(qptr, 0, context, fd);
 }
+
+/* Cancels the execution of the next state of the protocol. */
+
+void silc_protocol_cancel(void *qptr, void *context)
+{
+  SilcProtocol protocol = (SilcProtocol)context;
+
+  SILC_LOG_DEBUG(("Start"));
+
+  silc_task_unregister_by_callback(qptr, protocol->protocol->callback);
+}