mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-11 04:18:21 +00:00
Merged revisions 163629 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r163629 | file | 2008-12-12 14:17:12 -0400 (Fri, 12 Dec 2008) | 4 lines When a device registers we need to unlink them (if linked) from the peers_by_ip container and link them back in since their IP address has changed. This would have manifested itself if you configured a new device (as type=peer), registered, and then tried to place a call from the device. Since the peer was not linked into the peers_by_ip container it would have never been found. (closes issue #13811) Reported by: pj ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@163640 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -10492,6 +10492,11 @@ static enum parse_register_result parse_register_contact(struct sip_pvt *pvt, st
|
|||||||
|
|
||||||
oldsin = peer->addr;
|
oldsin = peer->addr;
|
||||||
|
|
||||||
|
/* If we were already linked into the peers_by_ip container unlink ourselves so nobody can find us */
|
||||||
|
if (peer->addr.sin_addr.s_addr) {
|
||||||
|
ao2_t_unlink(peers_by_ip, peer, "ao2_unlink of peer from peers_by_ip table");
|
||||||
|
}
|
||||||
|
|
||||||
/* Check that they're allowed to register at this IP */
|
/* Check that they're allowed to register at this IP */
|
||||||
/* XXX This could block for a long time XXX */
|
/* XXX This could block for a long time XXX */
|
||||||
hp = ast_gethostbyname(host, &ahp);
|
hp = ast_gethostbyname(host, &ahp);
|
||||||
@@ -10520,6 +10525,9 @@ static enum parse_register_result parse_register_contact(struct sip_pvt *pvt, st
|
|||||||
peer->addr = pvt->recv;
|
peer->addr = pvt->recv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Now that our address has been updated put ourselves back into the container for lookups */
|
||||||
|
ao2_t_link(peers_by_ip, peer, "ao2_link into peers_by_ip table");
|
||||||
|
|
||||||
/* Save SIP options profile */
|
/* Save SIP options profile */
|
||||||
peer->sipoptions = pvt->sipoptions;
|
peer->sipoptions = pvt->sipoptions;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user