提交 58310a92 authored 作者: Michael Jerris's avatar Michael Jerris

make sofia set network_addr as the address the packet was actually received…

make sofia set network_addr as the address the packet was actually received from, not the address from the uri.

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4169 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 17d57b71
......@@ -94,6 +94,15 @@ atoi(expr))) ? SWITCH_TRUE : SWITCH_FALSE
*/
SWITCH_DECLARE(switch_status_t) switch_find_local_ip(char *buf, int len, int family);
/*!
\brief find the char representation of an ip adress
\param buf the buffer to write the ip adress found into
\param len the length of the buf
\param the struct in_addr * to get the adress from
\return the ip adress string
*/
SWITCH_DECLARE(char *) get_addr(char *buf, switch_size_t len, struct in_addr *in);
#define SWITCH_STATUS_IS_BREAK(x) (x == SWITCH_STATUS_BREAK || x == 730035 || x == 35)
/*!
......
......@@ -74,6 +74,7 @@ typedef struct private_object private_object_t;
#include <sofia-sip/su_md5.h>
#include <sofia-sip/su_log.h>
#include <sofia-sip/nea.h>
#include <sofia-sip/msg_addr.h>
extern su_log_t tport_log[];
......@@ -4173,7 +4174,7 @@ static void sip_i_invite(nua_t *nua,
sip_unknown_t *un;
private_object_t *tech_pvt = NULL;
switch_channel_t *channel = NULL;
sip_from_t const *from = sip->sip_from;
sip_from_t const *from = sip->sip_from;
sip_to_t const *to = sip->sip_to;
char *displayname;
char *username, *req_username = NULL;
......@@ -4184,8 +4185,9 @@ static void sip_i_invite(nua_t *nua,
char *via_rport, *via_host, *via_port;
char *from_port;
char uri[1024];
char network_ip[80];
if (!(sip && sip->sip_contact && sip->sip_contact->m_url)) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "NO CONTACT!\n");
return;
......@@ -4212,6 +4214,9 @@ static void sip_i_invite(nua_t *nua,
tech_pvt->key = switch_core_session_strdup(session, key);
}
get_addr(network_ip, sizeof(network_ip), &((struct sockaddr_in *)msg_addrinfo(nua_current_request(nua))->ai_addr)->sin_addr);
to_user = (char *) to->a_url->url_user;
to_host = (char *) to->a_url->url_host;
if (!(to_port = (char *) to->a_url->url_port)) {
......@@ -4365,7 +4370,7 @@ static void sip_i_invite(nua_t *nua,
profile->dialplan,
displayname,
(char *) from->a_url->url_user,
(char *) from->a_url->url_host,
network_ip,
NULL,
NULL,
NULL,
......
......@@ -36,7 +36,6 @@
#ifndef WIN32
#include <arpa/inet.h>
#endif
static char *get_addr(char *buf, switch_size_t len, struct in_addr *in);
SWITCH_DECLARE(switch_status_t) switch_find_local_ip(char *buf, int len, int family)
{
......@@ -348,7 +347,7 @@ SWITCH_DECLARE(char *) switch_priority_name(switch_priority_t priority)
static char RFC2833_CHARS[] = "0123456789*#ABCDF";
static char *get_addr(char *buf, switch_size_t len, struct in_addr *in)
SWITCH_DECLARE(char *) get_addr(char *buf, switch_size_t len, struct in_addr *in)
{
uint8_t x, *i;
char *p = buf;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论