projects
/
NeonServV5.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3e3930a
)
request MODE list when joining a channel and prevent mode event duplicates
author
pk910
<philipp@zoelle1.de>
Fri, 12 Aug 2011 04:40:52 +0000
(06:40 +0200)
committer
pk910
<philipp@zoelle1.de>
Fri, 12 Aug 2011 04:40:52 +0000
(06:40 +0200)
IRCParser.c
patch
|
blob
|
history
diff --git
a/IRCParser.c
b/IRCParser.c
index f4e8bd4ae8ebb85805af062d88e9f86b9b6a0e65..8f1834c8a4668f3b153d685c972d84afdd4d47d1 100644
(file)
--- a/
IRCParser.c
+++ b/
IRCParser.c
@@
-114,6
+114,7
@@
static IRC_CMD(raw_join) {
chan->chanbot = user;
struct ChanUser *chanuser = addChanUser(chan, user); //it must be a bot
get_userlist(chan, got_channel_userlist, chanuser);
chan->chanbot = user;
struct ChanUser *chanuser = addChanUser(chan, user); //it must be a bot
get_userlist(chan, got_channel_userlist, chanuser);
+ putsock(client, "MODE %s", chan->name);
} else if(!isUserOnChan(user, chan) && (chan->flags & CHANFLAG_RECEIVED_USERLIST)) {
struct ChanUser *chanuser = addChanUser(chan, user);
event_join(chanuser);
} else if(!isUserOnChan(user, chan) && (chan->flags & CHANFLAG_RECEIVED_USERLIST)) {
struct ChanUser *chanuser = addChanUser(chan, user);
event_join(chanuser);
@@
-305,6
+306,15
@@
static IRC_CMD(raw_315) {
return 1;
}
return 1;
}
+static IRC_CMD(raw_324) { //MODE LIST
+ //Watchcat #pktest +stnzN
+ if(from == NULL || argc < 3) return 0;
+ struct ChanNode *chan = getChanByName(argv[1]);
+ if(chan == NULL) return 0;
+ parseModes(chan, argv[2], argv+3, argc-3);
+ return 1;
+}
+
static IRC_CMD(raw_invite) {
if(from == NULL || argc < 2) return 0;
struct UserNode *user = getUserByMask(from);
static IRC_CMD(raw_invite) {
if(from == NULL || argc < 2) return 0;
struct UserNode *user = getUserByMask(from);
@@
-323,6
+333,7
@@
static IRC_CMD(raw_mode) {
//ChannelMode
struct ChanNode *chan = getChanByName(argv[0]);
if(!chan) return 0;
//ChannelMode
struct ChanNode *chan = getChanByName(argv[0]);
if(!chan) return 0;
+ if(chan->chanbot != client->user) return 1;
event_mode(user, chan, argv[1], argv+2, argc-2);
parseModes(chan, argv[1], argv+2, argc-2);
} else {
event_mode(user, chan, argv[1], argv+2, argc-2);
parseModes(chan, argv[1], argv+2, argc-2);
} else {
@@
-334,6
+345,7
@@
static IRC_CMD(raw_mode) {
void parser_init() {
//all the raws we receive...
register_irc_function("001", raw_001);
void parser_init() {
//all the raws we receive...
register_irc_function("001", raw_001);
+ register_irc_function("324", raw_324);
register_irc_function("INVITE", raw_invite);
register_irc_function("NOTICE", raw_notice);
register_irc_function("TOPIC", raw_topic);
register_irc_function("INVITE", raw_invite);
register_irc_function("NOTICE", raw_notice);
register_irc_function("TOPIC", raw_topic);