Rework redirections to deal with multiple concurrent redirects better.

These mostly happen when doing remote whois and the
target server is slow.
The code uses the source server but will try to do what it
can if servers think they need to mask it.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4638 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
Jilles Tjoelker 2007-11-14 23:02:40 +00:00 committed by jilles
commit 90b66dbe6c
6 changed files with 80 additions and 39 deletions

View file

@ -391,7 +391,7 @@ static void sig_server_event(IRC_SERVER_REC *server, const char *line,
while (*args == ' ') args++;
g_strdown(event);
signal = server_redirect_peek_signal(server, event, args, &redirected);
signal = server_redirect_peek_signal(server, nick, event, args, &redirected);
if ((signal != NULL && strncmp(signal, "proxy ", 6) != 0) ||
(signal == NULL && redirected)) {
/* we want to send this to one client (or proxy itself) only */
@ -401,7 +401,7 @@ static void sig_server_event(IRC_SERVER_REC *server, const char *line,
}
if (signal != NULL) {
server_redirect_get_signal(server, event, args);
server_redirect_get_signal(server, nick, event, args);
if (sscanf(signal+6, "%p", &client) == 1) {
/* send it to specific client only */
if (g_slist_find(proxy_clients, client) != NULL)