diff --git a/channels/chan_sip.c b/channels/chan_sip.c index f0f5c0281c..0994b04ba0 100755 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -1098,7 +1098,7 @@ static struct sip_peer *realtime_peer(const char *peername, struct sockaddr_in * } ast_destroy_realtime(var); } - return NULL; + return peer; } /*--- find_peer: Locate peer by name or ip address */ @@ -5341,12 +5341,15 @@ static int check_user_full(struct sip_pvt *p, struct sip_request *req, char *cmd if (user && debug) ast_verbose("Found user '%s'\n", user->name); } else { - if (user && debug) - ast_verbose("Found user '%s', but fails host access\n", user->name); + if (user) { + if (debug) + ast_verbose("Found user '%s', but fails host access\n", user->name); + if (user->temponly) + destroy_user(user); + } user = NULL; } - if (user && user->temponly) - destroy_user(user); + /* Temp user gets cleaned up at the end */ ast_mutex_unlock(&userl.lock); if (!user) { /* If we didn't find a user match, check for peers */ @@ -5429,9 +5432,8 @@ static int check_user_full(struct sip_pvt *p, struct sip_request *req, char *cmd } - if (user && user->temponly) { + if (user && user->temponly) destroy_user(user); - } return res; } diff --git a/res/res_config_odbc.c b/res/res_config_odbc.c index 4ccfd62299..7d2cd8ea15 100755 --- a/res/res_config_odbc.c +++ b/res/res_config_odbc.c @@ -128,6 +128,7 @@ static struct ast_variable *realtime_odbc(const char *database, const char *tabl return NULL; } for (x=0;x