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:
Michael Jerris 2007-02-08 20:16:08 +00:00
parent 17d57b7142
commit 58310a9272
3 changed files with 18 additions and 5 deletions

View File

@ -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)
/*!

View File

@ -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,6 +4185,7 @@ 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)) {
@ -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,

View File

@ -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;