summaryrefslogtreecommitdiff
path: root/src/irc/dcc/dcc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/irc/dcc/dcc.c')
-rw-r--r--src/irc/dcc/dcc.c38
1 files changed, 12 insertions, 26 deletions
diff --git a/src/irc/dcc/dcc.c b/src/irc/dcc/dcc.c
index de8601d5..1d0fc2dc 100644
--- a/src/irc/dcc/dcc.c
+++ b/src/irc/dcc/dcc.c
@@ -287,7 +287,7 @@ static void dcc_ctcp_msg(IRC_SERVER_REC *server, char *data,
{
char *type, *arg, *addrstr, *portstr, *sizestr, *str;
void *free_arg;
- const char *cstr;
+ const char *masks;
DCC_REC *dcc, *olddcc;
long size;
int dcctype, port;
@@ -331,39 +331,23 @@ static void dcc_ctcp_msg(IRC_SERVER_REC *server, char *data,
switch (dcc->type)
{
case DCC_TYPE_GET:
- cstr = settings_get_str("dcc_autoget_masks");
- /* check that autoget masks match */
- if (settings_get_bool("dcc_autoget") && (*cstr == '\0' || masks_match(SERVER(server), cstr, sender, sendaddr)) &&
- /* check file size limit, FIXME: it's possible to send a bogus file size and then just send what ever sized file.. */
- (settings_get_int("dcc_max_autoget_size") <= 0 || (settings_get_int("dcc_max_autoget_size") > 0 && size <= settings_get_int("dcc_max_autoget_size")*1024)))
- {
- /* automatically get */
- str = g_strdup_printf("GET %s %s", dcc->nick, dcc->arg);
- signal_emit("command dcc", 2, str, server);
- g_free(str);
- }
- else
- {
- /* send request */
- signal_emit("dcc request", 1, dcc);
- }
+ /* send request */
+ signal_emit("dcc request", 2, dcc, sendaddr);
break;
case DCC_TYPE_CHAT:
- cstr = settings_get_str("dcc_autochat_masks");
+ /* send request */
+ signal_emit("dcc request", 2, dcc, sendaddr);
+
+ masks = settings_get_str("dcc_autochat_masks");
if (olddcc != NULL ||
- (*cstr != '\0' && masks_match(SERVER(server), cstr, sender, sendaddr)))
+ (*masks != '\0' && masks_match(SERVER(server), masks, sender, sendaddr)))
{
/* automatically accept chat */
str = g_strdup_printf("CHAT %s", dcc->nick);
signal_emit("command dcc", 2, str, server);
g_free(str);
}
- else
- {
- /* send request */
- signal_emit("dcc request", 1, dcc);
- }
break;
case DCC_TYPE_RESUME:
@@ -416,7 +400,8 @@ static void dcc_ctcp_reply(IRC_SERVER_REC *server, char *data,
cmd_params_free(free_arg);
}
-static void dcc_reject(DCC_REC *dcc, IRC_SERVER_REC *server)
+/* reject DCC request */
+void dcc_reject(DCC_REC *dcc, IRC_SERVER_REC *server)
{
char *str;
@@ -438,7 +423,7 @@ static void dcc_reject(DCC_REC *dcc, IRC_SERVER_REC *server)
}
/* SYNTAX: DCC CLOSE <type> <nick> [<file>] */
-static void cmd_dcc_close(IRC_SERVER_REC *server, char *data)
+static void cmd_dcc_close(char *data, IRC_SERVER_REC *server)
{
DCC_REC *dcc;
GSList *tmp, *next;
@@ -540,6 +525,7 @@ void irc_dcc_init(void)
settings_add_bool("dcc", "dcc_autorename", FALSE);
settings_add_bool("dcc", "dcc_autoget", FALSE);
+ settings_add_bool("dcc", "dcc_autoresume", FALSE);
settings_add_int("dcc", "dcc_max_autoget_size", 1000);
settings_add_str("dcc", "dcc_download_path", "~");
settings_add_int("dcc", "dcc_file_create_mode", 644);