use resolver instead of old p_s_i_f_n().

sayer/1.4-spce2.6
Raphael Coeffic 15 years ago
parent fbd68ba85e
commit c64ab094f4

@ -38,6 +38,8 @@
#include "rtp/telephone_event.h"
#include "AmJitterBuffer.h"
#include "sip/resolver.h"
#include "log.h"
#include <assert.h>
@ -473,37 +475,36 @@ void AmRtpStream::setRAddr(const string& addr, unsigned short port)
{
DBG("RTP remote address set to %s:%u\n",addr.c_str(),port);
#ifdef SUPPORT_IPV6
struct sockaddr_storage ss;
memset (&ss, 0, sizeof (ss));
if(!inet_aton_v6(addr.c_str(),&ss)){
ERROR("address not valid (host: %s)\n",addr.c_str());
/* inet_aton only supports dot-notation IP address strings... but an RFC
* 4566 unicast-address, as found in c=, can be an FQDN (or other!).
*/
dns_handle dh;
if (resolver::instance()->resolve_name(addr.c_str(),&dh,&ss,IPv4) < 0) {
WARN("Address not valid (host: %s).\n", addr.c_str());
throw string("invalid address");
}
#ifdef SUPPORT_IPV6
memcpy(&r_saddr,&ss,sizeof(struct sockaddr_storage));
set_port_v6(&r_saddr,port);
#else
struct sockaddr_in sa;
memset (&sa, 0, sizeof (sa));
memset (&sa, 0, sizeof(sa));
#ifdef BSD44SOCKETS
sa.sin_len = sizeof(sockaddr_in);
#endif
sa.sin_family = AF_INET;
sa.sin_port = htons(port);
/* inet_aton only supports dot-notation IP address strings... but an RFC
* 4566 unicast-address, as found in c=, can be an FQDN (or other!).
* We need to do more sophisticated parsing -- hence p_s_i_f_n().
*/
if (!populate_sockaddr_in_from_name(addr, &sa)) {
WARN("Address not valid (host: %s).\n", addr.c_str());
throw string("invalid address");
}
memcpy(&r_saddr,&sa,sizeof(struct sockaddr_in));
memcpy(&r_saddr.sin_addr,&((sockaddr_in*)&ss)->sin_addr,sizeof(in_addr));
#endif
r_host = addr;

Loading…
Cancel
Save