]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
make sofia set network_addr as the address the packet was actually received from...
authorMichael Jerris <mike@jerris.com>
Thu, 8 Feb 2007 20:16:08 +0000 (20:16 +0000)
committerMichael Jerris <mike@jerris.com>
Thu, 8 Feb 2007 20:16:08 +0000 (20:16 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4169 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_utils.h
src/mod/endpoints/mod_sofia/mod_sofia.c
src/switch_utils.c

index ef228ed96e08a1f491225fdc16146a1059c70cce..c30303fa2e886dd4b4517c241343ab383a93c948 100644 (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)
 
 /*!
index 4d4d0c7d3e98c2500c42c3d249e29352012b5f21..3fffbe5f262c7347c358f98f2f5f13fd94f35a9d 100644 (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,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,
index 1027a9046dabc2d778e6aa0a06fd67d0439b649b..8787775ca3f4bde74cbfcd789408615f9a2c474f 100644 (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;