Explorar o código

* Add an extra 2 second delay before releasing nick to aide in syncing and time to type /nick

Bryan Drewery %!s(int64=16) %!d(string=hai) anos
pai
achega
5d1435262c
Modificáronse 2 ficheiros con 18 adicións e 6 borrados
  1. 1 0
      doc/UPDATES
  2. 17 6
      src/mod/server.mod/servmsg.c

+ 1 - 0
doc/UPDATES

@@ -1,6 +1,7 @@
 * Fix crash related to slowpart
 * Fixed parsing errors in .chanset
 * Only global +n can use .chanset * now
+* Add an extra 2 second delay before releasing nick to aide in syncing and time to type /nick
 
 1.3 - http://wraith.botpack.net/milestone/1.3
 * Binary / shell / startup changes

+ 17 - 6
src/mod/server.mod/servmsg.c

@@ -954,18 +954,29 @@ void nicks_available(char* buf, char delim, bool buf_contains_available) {
   nick_available(is_jupe, is_orig);
 }
 
+void real_release_nick(void *data) {
+  if (match_my_nick(jupenick)) {
+    altnick_char = rolls = 0;
+    tried_nick = now;
+    dprintf(DP_MODE, "NICK %s\n", origbotname);
+    putlog(LOG_MISC, "*", "Releasing jupenick '%s' and switching back to nick '%s'", jupenick, origbotname);
+  }
+}
+
 void release_nick(const char* nick) {
   // Only do this if currently on a jupenick
   if (jupenick[0] && ((!nick && match_my_nick(jupenick)) || (nick && !rfc_casecmp(jupenick, nick)))) {
     keepnick = 0;
+
+    // Delay releasing nick for 2 seconds to allow botnet to receive orders and user to type /NICK
+    egg_timeval_t howlong;
+    howlong.sec = 2;
+    howlong.usec = 0;
+
     release_time = now;
 
-    if (match_my_nick(jupenick)) {
-      altnick_char = rolls = 0;
-      tried_nick = now;
-      dprintf(DP_MODE, "NICK %s\n", origbotname);
-      putlog(LOG_MISC, "*", "Releasing jupenick '%s' and switching back to nick '%s'", jupenick, origbotname);
-    }
+    timer_create(&howlong, "release_nick", (Function) real_release_nick);
+
   } else if (!nick)
     putlog(LOG_CMDS, "*", "Not releasing nickname. (Not currently on a jupenick)");
 }