Have a sane ctcp version code.
This commit is contained in:
parent
eb82981996
commit
a7e5ca3d0b
44
src/irc.c
44
src/irc.c
@ -63,7 +63,6 @@ static void irc_copy_cli(struct link_client *src, struct link_client *dest,
|
|||||||
static void irc_cli_make_join(struct link_client *ic);
|
static void irc_cli_make_join(struct link_client *ic);
|
||||||
static void server_setup_reconnect_timer(struct link *link);
|
static void server_setup_reconnect_timer(struct link *link);
|
||||||
int irc_cli_bip(bip_t *bip, struct link_client *ic, struct line *line);
|
int irc_cli_bip(bip_t *bip, struct link_client *ic, struct line *line);
|
||||||
static int irc_ctcp(struct link_server *server, struct line *line);
|
|
||||||
|
|
||||||
#define LAGOUT_TIME 480
|
#define LAGOUT_TIME 480
|
||||||
#define LAGCHECK_TIME (90)
|
#define LAGCHECK_TIME (90)
|
||||||
@ -471,8 +470,6 @@ int irc_dispatch_server(bip_t *bip, struct link_server *server,
|
|||||||
ret = irc_quit(server, line);
|
ret = irc_quit(server, line);
|
||||||
} else if (strcmp(line->elemv[0], "NICK") == 0) {
|
} else if (strcmp(line->elemv[0], "NICK") == 0) {
|
||||||
ret = irc_nick(server, line);
|
ret = irc_nick(server, line);
|
||||||
} else if (strcmp(line->elemv[0], "CTCP") == 0) {
|
|
||||||
ret = irc_ctcp(server, line);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret == OK_COPY) {
|
if (ret == OK_COPY) {
|
||||||
@ -1725,11 +1722,30 @@ static int irc_kick(struct link_server *server, struct line *line)
|
|||||||
return OK_COPY;
|
return OK_COPY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void irc_privmsg_check_ctcp(struct link_server *server,
|
||||||
|
struct line *line)
|
||||||
|
{
|
||||||
|
if (line->elemc != 3)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!line->origin)
|
||||||
|
return;
|
||||||
|
|
||||||
|
char *nick;
|
||||||
|
nick = nick_from_ircmask(line->origin);
|
||||||
|
if (strcmp(line->elemv[2], "\001VERSION\001") == 0) {
|
||||||
|
WRITE_LINE2(CONN(server), NULL, "NOTICE", nick,
|
||||||
|
"\001VERSION bip" BIP_VERSION "\001");
|
||||||
|
}
|
||||||
|
free(nick);
|
||||||
|
}
|
||||||
|
|
||||||
static int irc_privmsg(struct link_server *server, struct line *line)
|
static int irc_privmsg(struct link_server *server, struct line *line)
|
||||||
{
|
{
|
||||||
if (LINK(server)->s_state == IRCS_CONNECTED)
|
if (LINK(server)->s_state == IRCS_CONNECTED)
|
||||||
log_privmsg(LINK(server)->log, line->origin, line->elemv[1],
|
log_privmsg(LINK(server)->log, line->origin, line->elemv[1],
|
||||||
line->elemv[2]);
|
line->elemv[2]);
|
||||||
|
irc_privmsg_check_ctcp(server, line);
|
||||||
return OK_COPY;
|
return OK_COPY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1791,28 +1807,6 @@ static int irc_nick(struct link_server *server, struct line *line)
|
|||||||
return OK_COPY;
|
return OK_COPY;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int irc_ctcp(struct link_server *server, struct line *line)
|
|
||||||
{
|
|
||||||
if (line->elemc != 2)
|
|
||||||
return OK_COPY;
|
|
||||||
|
|
||||||
if (!line->origin)
|
|
||||||
return OK_COPY;
|
|
||||||
|
|
||||||
char *nick;
|
|
||||||
nick = nick_from_ircmask(line->origin);
|
|
||||||
|
|
||||||
if (strcmp(line->elemv[1], "\001VERSION\001") == 0) {
|
|
||||||
WRITE_LINE2(CONN(server), NULL, "NOTICE", nick,
|
|
||||||
"\001VERSION bip" BIP_VERSION "\001");
|
|
||||||
/* change to OK_FORGET, for bip to hide client versions */
|
|
||||||
free(nick);
|
|
||||||
return OK_COPY;
|
|
||||||
}
|
|
||||||
free(nick);
|
|
||||||
return OK_COPY;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int irc_generic_quit(struct link_server *server, struct line *line)
|
static int irc_generic_quit(struct link_server *server, struct line *line)
|
||||||
{
|
{
|
||||||
struct channel *channel;
|
struct channel *channel;
|
||||||
|
Loading…
Reference in New Issue
Block a user