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
This commit is contained in:
parent
17d57b7142
commit
58310a9272
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue