Fix unreg_{notice,privmsg}_func().
[srvx.git] / src / proto-bahamut.c
index d2edc2a3b48629db744d980300835d897631729c..0e8309feb358939feabbe2859a953a7b5a47d817 100644 (file)
@@ -1173,6 +1173,18 @@ reg_privmsg_func(struct userNode *user, privmsg_func_t handler) {
     info->on_privmsg = handler;
 }
 
+void
+unreg_privmsg_func(struct userNode *user) {
+    struct service_message_info *info;
+    info = dict_find(service_msginfo_dict, user->nick, NULL);
+    if (info) {
+        info->on_privmsg = NULL;
+        if (info->on_notice == NULL) {
+            dict_remove(service_msginfo_dict, user->nick);
+        }
+    }
+}
+
 void
 reg_notice_func(struct userNode *user, privmsg_func_t handler) {
     struct service_message_info *info = dict_find(service_msginfo_dict, user->nick, NULL);
@@ -1183,6 +1195,18 @@ reg_notice_func(struct userNode *user, privmsg_func_t handler) {
     info->on_notice = handler;
 }
 
+void
+unreg_notice_func(struct userNode *user) {
+    struct service_message_info *info;
+    info = dict_find(service_msginfo_dict, user->nick, NULL);
+    if (info) {
+        info->on_notice = NULL;
+        if (info->on_privmsg == NULL) {
+            dict_remove(service_msginfo_dict, user->nick);
+        }
+    }
+}
+
 void
 reg_oper_func(oper_func_t handler)
 {