X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fmodules%2FNeonServ.mod%2Fevent_neonserv_join.c;h=ea0ce3fc729ce6620f85c6209bdf28a6d8668a75;hb=c8e7ce1c57afaebf3996a6712c45f4c89c34ba44;hp=68dd0a5ae6c778289d2eac1f1b3476341c82589a;hpb=689da1db7e2517c187ce76c6c553e20d630a7f36;p=NeonServV5.git diff --git a/src/modules/NeonServ.mod/event_neonserv_join.c b/src/modules/NeonServ.mod/event_neonserv_join.c index 68dd0a5..ea0ce3f 100644 --- a/src/modules/NeonServ.mod/event_neonserv_join.c +++ b/src/modules/NeonServ.mod/event_neonserv_join.c @@ -18,11 +18,10 @@ struct neonserv_event_join_cache { struct ClientSocket *client; struct ChanUser *chanuser; - int was_registering; }; static USERAUTH_CALLBACK(neonserv_event_join_nick_lookup); -static void neonserv_event_join_async1(struct ClientSocket *client, struct ChanUser *chanuser, int was_registering); +static void neonserv_event_join_async1(struct ClientSocket *client, struct ChanUser *chanuser); static TIMEQ_CALLBACK(neonserv_event_join_dynlimit); static void neonserv_event_join(struct ChanUser *chanuser) { @@ -31,6 +30,7 @@ static void neonserv_event_join(struct ChanUser *chanuser) { if(!client) return; //we can't "see" this event if(chanuser->user == client->user) { requestOp(client->user, chanuser->chan); + module_neonbackup_recover_chan(chanuser->chan); return; } if(chanuser->user->flags & USERFLAG_ISBOT) return; @@ -58,21 +58,19 @@ static void neonserv_event_join(struct ChanUser *chanuser) { } cache->client = client; cache->chanuser = chanuser; - cache->was_registering = (user->flags & USERFLAG_WAS_REGISTRING); get_userauth(user, module_id, neonserv_event_join_nick_lookup, cache); } else - neonserv_event_join_async1(client, chanuser, (user->flags & USERFLAG_WAS_REGISTRING)); + neonserv_event_join_async1(client, chanuser); } static USERAUTH_CALLBACK(neonserv_event_join_nick_lookup) { struct neonserv_event_join_cache *cache = data; - if(user) { - neonserv_event_join_async1(cache->client, cache->chanuser, cache->was_registering); - } + if(user) + neonserv_event_join_async1(cache->client, cache->chanuser); free(cache); } -static void neonserv_event_join_async1(struct ClientSocket *client, struct ChanUser *chanuser, int was_registering) { +static void neonserv_event_join_async1(struct ClientSocket *client, struct ChanUser *chanuser) { struct ClientSocket *textclient = ((client->flags & SOCKET_FLAG_PREFERRED) ? client : get_prefered_bot(client->botid)); struct ChanNode *chan = chanuser->chan; struct UserNode *user = chanuser->user; @@ -139,7 +137,7 @@ static void neonserv_event_join_async1(struct ClientSocket *client, struct ChanU if(a) b = a+2; } while(a); - if(greetingPos && (!was_registering || *row[2])) + if(greetingPos && *row[2]) reply(textclient, user, "[%s] %s", chan->name, greeting); //USER RIGHTS if(!(userflags & DB_CHANUSER_NOAUTOOP)) { @@ -237,6 +235,7 @@ static TIMEQ_CALLBACK(neonserv_event_join_dynlimit) { char *chanName = data; struct ChanNode *chan = getChanByName(chanName); free(chanName); + if(!chan) return; struct ClientSocket *client = getBotForChannel(chan); if(!client) return; loadChannelSettings(chan);