forked from PsychoticNinja/irssi
Report failed redirections in rawlog.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2008 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
c0bf62ba44
commit
3101437f75
@ -21,6 +21,7 @@
|
|||||||
#include "module.h"
|
#include "module.h"
|
||||||
#include "signals.h"
|
#include "signals.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
#include "rawlog.h"
|
||||||
|
|
||||||
#include "irc-servers.h"
|
#include "irc-servers.h"
|
||||||
#include "servers-redirect.h"
|
#include "servers-redirect.h"
|
||||||
@ -28,6 +29,7 @@
|
|||||||
#define DEFAULT_REDIRECT_TIMEOUT 60
|
#define DEFAULT_REDIRECT_TIMEOUT 60
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
char *name;
|
||||||
int refcount;
|
int refcount;
|
||||||
|
|
||||||
int remote;
|
int remote;
|
||||||
@ -77,6 +79,7 @@ static void redirect_cmd_destroy(REDIRECT_CMD_REC *rec)
|
|||||||
g_free(tmp->data);
|
g_free(tmp->data);
|
||||||
g_slist_free(rec->start);
|
g_slist_free(rec->start);
|
||||||
g_slist_free(rec->stop);
|
g_slist_free(rec->stop);
|
||||||
|
g_free(rec->name);
|
||||||
g_free(rec);
|
g_free(rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,16 +151,16 @@ void server_redirect_register_list(const char *command,
|
|||||||
the old one */
|
the old one */
|
||||||
g_hash_table_remove(command_redirects, command);
|
g_hash_table_remove(command_redirects, command);
|
||||||
redirect_cmd_unref(value);
|
redirect_cmd_unref(value);
|
||||||
g_free(key);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rec = g_new0(REDIRECT_CMD_REC, 1);
|
rec = g_new0(REDIRECT_CMD_REC, 1);
|
||||||
redirect_cmd_ref(rec);
|
redirect_cmd_ref(rec);
|
||||||
|
rec->name = g_strdup(command);
|
||||||
rec->remote = remote;
|
rec->remote = remote;
|
||||||
rec->timeout = timeout > 0 ? timeout : DEFAULT_REDIRECT_TIMEOUT;
|
rec->timeout = timeout > 0 ? timeout : DEFAULT_REDIRECT_TIMEOUT;
|
||||||
rec->start = start;
|
rec->start = start;
|
||||||
rec->stop = stop;
|
rec->stop = stop;
|
||||||
g_hash_table_insert(command_redirects, g_strdup(command), rec);
|
g_hash_table_insert(command_redirects, rec->name, rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
void server_redirect_event(IRC_SERVER_REC *server, const char *command,
|
void server_redirect_event(IRC_SERVER_REC *server, const char *command,
|
||||||
@ -360,6 +363,7 @@ static REDIRECT_REC *redirect_find(IRC_SERVER_REC *server, const char *event,
|
|||||||
REDIRECT_REC *redirect;
|
REDIRECT_REC *redirect;
|
||||||
GSList *tmp, *next;
|
GSList *tmp, *next;
|
||||||
time_t now;
|
time_t now;
|
||||||
|
char *str;
|
||||||
|
|
||||||
/* find the redirection */
|
/* find the redirection */
|
||||||
*signal = NULL; redirect = NULL;
|
*signal = NULL; redirect = NULL;
|
||||||
@ -392,6 +396,11 @@ static REDIRECT_REC *redirect_find(IRC_SERVER_REC *server, const char *event,
|
|||||||
g_slist_remove(server->redirects, rec);
|
g_slist_remove(server->redirects, rec);
|
||||||
if (!rec->destroyed && rec->failure_signal != NULL) {
|
if (!rec->destroyed && rec->failure_signal != NULL) {
|
||||||
/* emit the failure signal */
|
/* emit the failure signal */
|
||||||
|
str = g_strdup_printf("FAILED %s: %s",
|
||||||
|
rec->cmd->name,
|
||||||
|
rec->failure_signal);
|
||||||
|
rawlog_redirect(server->rawlog, str);
|
||||||
|
g_free(str);
|
||||||
signal_emit(rec->failure_signal, 1, server);
|
signal_emit(rec->failure_signal, 1, server);
|
||||||
}
|
}
|
||||||
server_redirect_destroy(rec);
|
server_redirect_destroy(rec);
|
||||||
@ -487,7 +496,6 @@ static void sig_disconnected(IRC_SERVER_REC *server)
|
|||||||
|
|
||||||
static void cmd_redirect_destroy(char *key, REDIRECT_CMD_REC *cmd)
|
static void cmd_redirect_destroy(char *key, REDIRECT_CMD_REC *cmd)
|
||||||
{
|
{
|
||||||
g_free(key);
|
|
||||||
redirect_cmd_unref(cmd);
|
redirect_cmd_unref(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user