diff --git a/Changelog b/Changelog index 9856c81..2696126 100644 --- a/Changelog +++ b/Changelog @@ -1,5 +1,7 @@ [Changes 1.2.2] +* Fix CHANGE_NICK_ON_KILL feature. (caf) + * Improve error handling in /READLOG. (caf) * Fix memory leak in /QUEUE -FLUSH. (caf) diff --git a/include/modval.h b/include/modval.h index 6c9fc05..5b0758e 100644 --- a/include/modval.h +++ b/include/modval.h @@ -510,7 +510,7 @@ extern Function_ptr *global; #define set_server_redirect (*(void (*)(int , const char *))global[SET_SERVER_REDIRECT]) #define get_server_redirect (*(char *(*)(int ))global[GET_SERVER_REDIRECT]) #define check_server_redirect (*(int (*)(char *))global[CHECK_SERVER_REDIRECT]) -#define fudge_nickname (*(void (*)(int , int ))global[FUDGE_NICKNAME]) +#define fudge_nickname (*(void (*)(int))global[FUDGE_NICKNAME]) #define reset_nickname (*(void (*)(int ))global[RESET_NICKNAME]) #define set_server_cookie (*(void (*)(int , char *))global[SET_SERVER_COOKIE]) diff --git a/include/server.h b/include/server.h index cf6c492..be23ba9 100644 --- a/include/server.h +++ b/include/server.h @@ -284,7 +284,7 @@ extern SGroup *server_group_list; void change_server_nickname (int, char *); void register_server (int, char *); - void BX_fudge_nickname (int, int); + void BX_fudge_nickname (int); char *BX_get_pending_nickname (int); void accept_server_nickname (int, char *); void BX_reset_nickname (int); diff --git a/source/numbers.c b/source/numbers.c index 1c74e21..14a6368 100644 --- a/source/numbers.c +++ b/source/numbers.c @@ -503,7 +503,7 @@ char *t = NULL; if (nick && (t = get_string_var(ALTNICK_VAR))) { if (!my_stricmp(t, nick)) - fudge_nickname(server, 0); + fudge_nickname(server); else change_server_nickname(server, t); } else @@ -513,7 +513,7 @@ char *t = NULL; else reset_nickname(from_server); #endif - fudge_nickname(server, 0); + fudge_nickname(server); } /* @@ -1149,7 +1149,6 @@ void numbered_command(char *from, int comm, char **ArgList) * Sometimes the server doesn't catch the USER line, so * here we send a simplified version again -lynx */ -/* fudge_nickname(from_server, 1);*/ register_server(from_server, NULL); PasteArgs(ArgList, 0); diff --git a/source/parse.c b/source/parse.c index b228461..cc5f3a2 100644 --- a/source/parse.c +++ b/source/parse.c @@ -1302,7 +1302,7 @@ static void p_kill(char *from, char **ArgList) ArgList[1] ? ArgList[1] : "(No Reason)")) put_it("%s", convert_output_format(fget_string_var(FORMAT_KILL_FSET), "%s %s %s", update_clock(GET_TIME), from, ArgList[1]? ArgList[1] : "You have been Killed")); if (get_int_var(CHANGE_NICK_ON_KILL_VAR)) - fudge_nickname(from_server, 1); + fudge_nickname(from_server); if (get_int_var(AUTO_RECONNECT_VAR)) servercmd (NULL, sc, empty_string, NULL); logmsg(LOG_KILL, from, 0, "%s", ArgList[1]?ArgList[1]:"(No Reason)"); diff --git a/source/server.c b/source/server.c index f1c2a26..e0f5f2f 100644 --- a/source/server.c +++ b/source/server.c @@ -2798,8 +2798,8 @@ void change_server_nickname (int ssn_index, char *nick) reset_nickname(ssn_index); } - if (server_list[ssn_index].s_nickname) - my_send_to_server(ssn_index, "NICK %s", server_list[ssn_index].s_nickname); + if (s->s_nickname && s->write > -1) + my_send_to_server(ssn_index, "NICK %s", s->s_nickname); } void accept_server_nickname (int ssn_index, char *nick) @@ -2847,15 +2847,11 @@ int is_orignick_pending (int servnum) * out of guesses, and if it ever gets to that point, it will do the * manually-ask-you-for-a-new-nickname thing. */ -void BX_fudge_nickname (int servnum, int resend_only) +void BX_fudge_nickname(int servnum) { - char l_nickname[BIG_BUFFER_SIZE + 1]; + char l_nickname[NICKNAME_LEN]; Server *s = &server_list[from_server]; - if (resend_only) - { - change_server_nickname(servnum, NULL); - return; - } + /* * If we got here because the user did a /NICK command, and * the nick they chose doesnt exist, then we just dont do anything, @@ -2867,7 +2863,7 @@ void BX_fudge_nickname (int servnum, int resend_only) return; } - if ((s->orignick_pending) && (!s->nickname_pending) && (!resend_only)) + if (s->orignick_pending) { new_free(&s->s_nickname); say("orignick feature failed, sorry"); @@ -2914,14 +2910,8 @@ void BX_fudge_nickname (int servnum, int resend_only) else { char tmp = l_nickname[8]; - l_nickname[8] = l_nickname[7]; - l_nickname[7] = l_nickname[6]; - l_nickname[6] = l_nickname[5]; - l_nickname[5] = l_nickname[4]; - l_nickname[4] = l_nickname[3]; - l_nickname[3] = l_nickname[2]; - l_nickname[2] = l_nickname[1]; - l_nickname[1] = l_nickname[0]; + + memmove(&l_nickname[1], &l_nickname[0], 8); l_nickname[0] = tmp; } if (!strcmp(l_nickname, "_________"))