Merged revisions 265449 via svnmerge from

https://origsvn.digium.com/svn/asterisk/trunk

........
  r265449 | mmichelson | 2010-05-24 16:44:30 -0500 (Mon, 24 May 2010) | 11 lines
  
  Allow type=user SIP endpoints to be loaded properly from realtime.
  
  (closes issue #16021)
  Reported by: Guggemand
  Patches:
        realtime-type-fix.patch uploaded by Guggemand (license 897)
  	  (altered by me slightly to avoid ref leaks)
  Tested by: Guggemand
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@265450 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.2
Mark Michelson 16 years ago
parent a7c719e376
commit eecd2c0f44

@ -4861,17 +4861,7 @@ static struct sip_peer *realtime_peer(const char *newpeername, struct sockaddr_i
}
for (tmp = var; tmp; tmp = tmp->next) {
/* If this is type=user, then skip this object. */
if (!strcasecmp(tmp->name, "type") &&
!strcasecmp(tmp->value, "user")) {
if(peerlist)
ast_config_destroy(peerlist);
else {
ast_variables_destroy(var);
ast_variables_destroy(varregs);
}
return NULL;
} else if (!newpeername && !strcasecmp(tmp->name, "name")) {
if (!newpeername && !strcasecmp(tmp->name, "name")) {
newpeername = tmp->value;
}
}
@ -4992,6 +4982,24 @@ static struct sip_peer *find_peer(const char *peer, struct sockaddr_in *sin, int
if (!p && (realtime || devstate_only)) {
p = realtime_peer(peer, sin, devstate_only);
if (p) {
switch (which_objects) {
case FINDUSERS:
if (!(p->type & SIP_TYPE_USER)) {
unref_peer(p, "Wrong type of realtime SIP endpoint");
return NULL;
}
break;
case FINDPEERS:
if (!(p->type & SIP_TYPE_PEER)) {
unref_peer(p, "Wrong type of realtime SIP endpoint");
return NULL;
}
break;
case FINDALLDEVICES:
break;
}
}
}
return p;

Loading…
Cancel
Save