X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=blobdiff_plain;f=src%2FIRCParser.c;h=701ad457b54d592ecae6b15c02d9d110916e2a88;hp=d9a707f63d024576c02c2a5bdc1cef516ed1515e;hb=HEAD;hpb=ee39770362f69ced5b52104b622582e882af0b77 diff --git a/src/IRCParser.c b/src/IRCParser.c index d9a707f..701ad45 100644 --- a/src/IRCParser.c +++ b/src/IRCParser.c @@ -113,7 +113,7 @@ static void parse_raw(struct ClientSocket *client, char *from, char *cmd, char * if(!irc_cmd) { event_raw(client, from, cmd, argv, argc); } else if(!ret) { - printf_log("main", LOG_WARNING | LOG_IRCRAW, "PARSE ERROR: %s\n", cmd); + printf_log("main", LOG_WARNING | LOG_IRCRAW, "PARSE ERROR: %s %s %s\n", (from ? from : "*"), cmd, merge_argv(argv, 0, argc)); } } @@ -481,7 +481,8 @@ static IRC_CMD(raw_kick) { chanuser->visCount--; if(chanuser->visCount == 0) { delChanUser(chanuser, 0); //not free, yet! - event_kick(user, chanuser, argv[2]); + if(user) + event_kick(user, chanuser, argv[2]); freeChanUser(chanuser); } @@ -556,6 +557,7 @@ static IRC_CMD(raw_quit) { if(user->channel == NULL) { if(isBot(user)) { //ASSERT + DESYNCHRONIZE(cache_sync); return 0; } if((user->flags & USERFLAG_WAS_REGISTERING)) { @@ -640,6 +642,7 @@ static IRC_CMD(raw_privmsg) { if(from == NULL || argc < 2) return 0; struct UserNode *user = getUserByMask(from); if(user == NULL) { + if(stricmplen(from, "***!", 4) == 0) return 1; /* ZNC Playback */ user = createTempUserMask(from); if(!user) return 0; user->flags |= USERFLAG_ISTMPUSER; @@ -684,6 +687,7 @@ static IRC_CMD(raw_privmsg) { } static IRC_CMD(raw_notice) { + if(from == NULL && argc && !stricmp(argv[0], "AUTH")) return 1; //NOTICE AUTH is NOT a parse error ;) if(from == NULL || argc < 2) return 0; struct UserNode *user = getUserByMask(from); if(user == NULL) {