Fix errors where incorrect address information was printed.
authorMark Michelson <mmichelson@digium.com>
Wed, 14 Jul 2010 22:32:29 +0000 (22:32 +0000)
committerMark Michelson <mmichelson@digium.com>
Wed, 14 Jul 2010 22:32:29 +0000 (22:32 +0000)
commit1e8c66e749a20c2c0202f0da58918e9313f0512c
treef8f902d38011e82daa5eb6696813e6e08940de0d
parent5d9aa45721c6f953b4798b5feb15c52397626dee
Fix errors where incorrect address information was printed.

ast_sockaddr_stringiy_fmt (which is call by all ast_sockaddr_stringify* functions)
uses thread-local storage for storing the string that it creates. In cases where
ast_sockaddr_stringify_fmt was being called twice within the same statement, the
result of one call would be overwritten by the result of the other call. This
usually was happening in printf-like statements and was resulting in the same
stringified addressed being printed twice instead of two separate addresses.

I have fixed this by using ast_strdupa on the result of stringify functions if
they are used twice within the same statement. As far as I could tell, there were
no instances where a pointer to the result of such a call were saved anywhere, so
this is the only situation I could see where this error could occur.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@276570 65c4cc65-6c06-0410-ace0-fbb531ad65f3
channels/chan_sip.c
main/acl.c
main/dnsmgr.c
res/res_rtp_asterisk.c