X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2FIRCParser.c;h=2d9fbbf5b815cea2dc3c164a56ef5c2aba04cbb6;hb=c49eed20311de32444533a519fa6fbacab481688;hp=60b48d9fe342649c5436b8550feeeb42c5c4783e;hpb=b29e54d8e3078941d4d0be587c5c39059da6bb42;p=NeonServV5.git diff --git a/src/IRCParser.c b/src/IRCParser.c index 60b48d9..2d9fbbf 100644 --- a/src/IRCParser.c +++ b/src/IRCParser.c @@ -35,27 +35,10 @@ int statistics_privmsg = 0; int statistics_network_users = 0; int statistics_network_channels = 0; -static void parse_line(struct ClientSocket *client, char *line); static void register_irc_function(char *command, irc_cmd_t *func); static void parse_raw(struct ClientSocket *client, char *from, char *cmd, char **argv, int argc); -int parse_lines(struct ClientSocket *client, char *lines, int len) { - int i, used = 0; - char *line = lines; - for(i = 0; i < len; i++) { - if(lines[i] == '\r') //just zero it out :D - lines[i] = 0; - if(lines[i] == '\n') { - lines[i] = 0; - parse_line(client, line); - line = lines+(i+1); - used = i+1; - } - } - return used; -} - -static void parse_line(struct ClientSocket *client, char *line) { +void parse_line(struct ClientSocket *client, char *line) { int argc = 0; char *argv[MAXNUMPARAMS]; #ifdef HAVE_THREADS @@ -188,7 +171,7 @@ static IRC_CMD(raw_join) { event_registered(user, from); user->flags &= ~USERFLAG_WAS_REGISTERING; } else if(!(chan->flags & CHANFLAG_RECEIVED_USERLIST)) { - if(!isBot(user)) { + if(client->user != user) { //bots are allowed to add themselves DESYNCHRONIZE(cache_sync); return 1; //ignore join } @@ -413,7 +396,7 @@ static IRC_CMD(raw_quit) { for(chanuser = getUserChannels(user, NULL); chanuser; chanuser = next_chanuser) { next_chanuser = getUserChannels(user, chanuser); chanuser->visCount--; - if(chanuser->visCount <= 0) { + if(chanuser->visCount <= 0 && !(user->flags & USERFLAG_WAS_REGISTERING)) { delChanUser(chanuser, 0); //not free, yet! event_part(chanuser, 1, argv[0]); if((chanuser->chan->flags & CHANFLAG_RECEIVED_USERLIST) && !(chanuser->chan->flags & CHANFLAG_REJOINING))