X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=sip.cpp;h=4d5be399aa7689620ceacc79e2d177120b16c9d0;hp=c6ddde3655a49dc5419b81573ab6140bfe6e9472;hb=58afedec93e67db3600e2251d922fa3a4dbd7254;hpb=302368de4846ab1d5dca3b73b7ed632aea08354e diff --git a/sip.cpp b/sip.cpp index c6ddde3..4d5be39 100644 --- a/sip.cpp +++ b/sip.cpp @@ -24,8 +24,8 @@ su_home_t sip_home[1]; struct sip_inst { char interface_name[64]; - char local_ip[16]; - char remote_ip[16]; + char local_peer[32]; + char remote_peer[32]; su_root_t *root; nua_t *nua; }; @@ -872,8 +872,9 @@ int Psip::message_setup(unsigned int epoint_id, int message_id, union parameter struct sip_inst *inst = (struct sip_inst *) p_s_sip_inst; char from[128]; char to[128]; - const char *local = inst->local_ip; - const char *remote = inst->remote_ip; + const char *local = inst->local_peer; + char local_ip[16]; + const char *remote = inst->remote_peer; char sdp_str[512], pt_str[32]; struct in_addr ia; struct epoint_list *epointlist; @@ -941,8 +942,15 @@ int Psip::message_setup(unsigned int epoint_id, int message_id, union parameter end_trace(); if (!p_s_rtp_ip_local) { - PDEBUG(DEBUG_SIP, "RTP local IP not known, so we use our local SIP ip %s\n", local); - inet_pton(AF_INET, local, &p_s_rtp_ip_local); + char *p; + + /* extract IP from local peer */ + SCPY(local_ip, local); + p = strchr(local_ip, ':'); + if (p) + *p = '\0'; + PDEBUG(DEBUG_SIP, "RTP local IP not known, so we use our local SIP ip %s\n", local_ip); + inet_pton(AF_INET, local_ip, &p_s_rtp_ip_local); p_s_rtp_ip_local = ntohl(p_s_rtp_ip_local); } ia.s_addr = htonl(p_s_rtp_ip_local); @@ -1813,8 +1821,8 @@ int sip_init_inst(struct interface *interface) interface->sip_inst = inst; SCPY(inst->interface_name, interface->name); - SCPY(inst->local_ip, interface->sip_local_ip); - SCPY(inst->remote_ip, interface->sip_remote_ip); + SCPY(inst->local_peer, interface->sip_local_peer); + SCPY(inst->remote_peer, interface->sip_remote_peer); /* init root object */ inst->root = su_root_create(inst);