static USERAUTH_CALLBACK(command_checked_auth) {
struct command_check_user_cache *cache = data;
tmp_text_client = cache->textclient;
- handle_command_async(cache->client, user, cache->chan, cache->sent_chan, cache->cbind, cache->argv, cache->argc);
+ if(user)
+ handle_command_async(cache->client, user, cache->chan, cache->sent_chan, cache->cbind, cache->argv, cache->argc);
free(cache->message);
if(cache->args_buffer)
free(cache->args_buffer);
break;
}
*args_ptr = args;
- if(cbind->func->func == modcmd_linker) {
+ if(cbind && cbind->func->func == modcmd_linker) {
return modcmd_linker_command(client, user, cbind, bind_index, args_ptr);
}
return cbind;
reply(tmp_text_client, user, "MODCMD_AUTH_REQUIRED");
return;
}
- if(chan && sent_chan != chan && !isUserOnChan(user, chan)) {
+ if(chan && sent_chan != chan && (BIND_FLAGS(cbind) & CMDFLAG_NO_CROSSCHAN) && !isUserOnChan(user, chan)) {
char user_in_chan = 0;
if((user->flags & USERFLAG_ISAUTHED)) {
//maybe there's another user authed to user->auth on the channel...