]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/nickserv.c
arch sync
[irc/evilnet/x3.git] / src / nickserv.c
index cf9d4498ed51964de18f3702e71bdf81d452b84a..4e011640714377c969b04443c2a922cbeeeb76a4 100644 (file)
@@ -1320,6 +1320,8 @@ static NICKSERV_FUNC(cmd_register)
        */
       SyncLog("REGISTER %s %s %s %s", hi->handle, syncpass, email_addr ? email_addr : "0", user->info);
     }
+
+    /* this wont work if email is required .. */
     process_adduser_pending(user);
 
     return 1;
@@ -2057,6 +2059,8 @@ static NICKSERV_FUNC(cmd_cookie)
 
     nickserv_eat_cookie(hi->cookie);
 
+    process_adduser_pending(user);
+
     return 1;
 }
 
@@ -3432,6 +3436,7 @@ nickserv_db_read_handle(const char *handle, dict_t obj)
     struct string_list *masks, *slist;
     struct handle_info *hi;
     struct userNode *authed_users;
+    struct userData *channels;
     unsigned long int id;
     unsigned int ii;
     dict_t subdb;
@@ -3445,10 +3450,13 @@ nickserv_db_read_handle(const char *handle, dict_t obj)
     }
     if ((hi = get_handle_info(handle))) {
         authed_users = hi->users;
+        channels = hi->channels;
         hi->users = NULL;
+        hi->channels = NULL;
         dict_remove(nickserv_handle_dict, hi->handle);
     } else {
         authed_users = NULL;
+        channels = NULL;
     }
     hi = register_handle(handle, str, id);
     if (authed_users) {
@@ -3458,6 +3466,7 @@ nickserv_db_read_handle(const char *handle, dict_t obj)
             authed_users = authed_users->next_authed;
         }
     }
+    hi->channels = channels;
     masks = database_get_data(obj, KEY_MASKS, RECDB_STRING_LIST);
     hi->masks = masks ? string_list_copy(masks) : alloc_string_list(1);
     str = database_get_data(obj, KEY_MAXLOGINS, RECDB_QSTRING);