user = addUserMask(from);
}
struct UserNode *registering, *last_registering = NULL, *next_registering;
- int noEvent = 0;
+ int noEvent = 0, wasRegistering = 0;
for(registering = registering_users; registering; registering = next_registering) {
next_registering = registering->next;
if(!strcmp(registering->nick, user->nick)) {
noEvent = event_registered(registering, user);
+ wasRegistering = 1;
if(last_registering)
last_registering->next = registering->next;
else
registering_users = registering->next;
-
delUser(registering, 1);
} else if(time(0) - registering->created > 2) {
if(last_registering)
putsock(client, "MODE %s +b", chan->name);
} else if(!isUserOnChan(user, chan) && (chan->flags & CHANFLAG_RECEIVED_USERLIST)) {
struct ChanUser *chanuser = addChanUser(chan, user);
- if(!noEvent)
+ if(!noEvent) {
+ if(wasRegistering)
+ user->flags |= USERFLAG_WAS_REGISTRING;
event_join(chanuser);
+ if(wasRegistering)
+ user->flags &= ~USERFLAG_WAS_REGISTRING;
+ }
}
return 1;
}