|
@@ -954,18 +954,29 @@ void nicks_available(char* buf, char delim, bool buf_contains_available) {
|
|
|
nick_available(is_jupe, is_orig);
|
|
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) {
|
|
void release_nick(const char* nick) {
|
|
|
// Only do this if currently on a jupenick
|
|
// Only do this if currently on a jupenick
|
|
|
if (jupenick[0] && ((!nick && match_my_nick(jupenick)) || (nick && !rfc_casecmp(jupenick, nick)))) {
|
|
if (jupenick[0] && ((!nick && match_my_nick(jupenick)) || (nick && !rfc_casecmp(jupenick, nick)))) {
|
|
|
keepnick = 0;
|
|
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;
|
|
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)
|
|
} else if (!nick)
|
|
|
putlog(LOG_CMDS, "*", "Not releasing nickname. (Not currently on a jupenick)");
|
|
putlog(LOG_CMDS, "*", "Not releasing nickname. (Not currently on a jupenick)");
|
|
|
}
|
|
}
|