diff options
author | Paul Belanger <paul.belanger@polybeacon.com> | 2010-11-01 16:11:50 +0000 |
---|---|---|
committer | Paul Belanger <paul.belanger@polybeacon.com> | 2010-11-01 16:11:50 +0000 |
commit | 53149a69dfeb09a86576ab705fa50ecb3feb0f40 (patch) | |
tree | 5488187dd821d287f2de465951b8930a3aa8a73e /channels | |
parent | 8e45c743d1e1192bd32d2fa5b780be02e359f136 (diff) |
Merged revisions 293496 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r293496 | pabelanger | 2010-11-01 12:09:05 -0400 (Mon, 01 Nov 2010) | 13 lines
Use ast_sockaddr_from_sin function not memcpy
This resolves some IAX2 registration issue report on the
asterisk-users mailing list.
(closes issue #18202)
Reported by: pabelanger
Patches:
update_registry.patch.v2 uploaded by pabelanger (license 224)
Tested by: pabelanger, Nic Colledge (mailing list)
Review: https://reviewboard.asterisk.org/r/993
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@293497 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_iax2.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 0438c9703..e30ec3029 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -8700,7 +8700,7 @@ static int update_registry(struct sockaddr_in *sin, int callno, char *devtype, i peercnt_modify(0, 0, &p->addr); /* Stash the IP address from which they registered */ - memcpy(&p->addr, sin, sizeof(p->addr)); + ast_sockaddr_from_sin(&p->addr, sin); snprintf(data, sizeof(data), "%s:%d:%d", ast_inet_ntoa(sin->sin_addr), ntohs(sin->sin_port), p->expiry); if (!ast_test_flag64(p, IAX_TEMPONLY) && sin->sin_addr.s_addr) { @@ -11190,10 +11190,13 @@ immediatedial: if ((ast_strlen_zero(iaxs[fr->callno]->secret) && ast_strlen_zero(iaxs[fr->callno]->inkeys)) || ast_test_flag(&iaxs[fr->callno]->state, IAX_STATE_AUTHENTICATED)) { - if (f.subclass.integer == IAX_COMMAND_REGREL) + if (f.subclass.integer == IAX_COMMAND_REGREL) { memset(&sin, 0, sizeof(sin)); - if (update_registry(&sin, fr->callno, ies.devicetype, fd, ies.refresh)) + sin.sin_family = AF_INET; + } + if (update_registry(&sin, fr->callno, ies.devicetype, fd, ies.refresh)) { ast_log(LOG_WARNING, "Registry error\n"); + } if (!iaxs[fr->callno]) { break; } |