- 2 fixes for using a port number != 5060 (by Miguel Angel)
This commit is contained in:
parent
1ac013d867
commit
a0d6e3967b
@ -1,6 +1,12 @@
|
|||||||
0.5.7
|
0.5.7
|
||||||
=====
|
=====
|
||||||
13-Jun-2004: - fix: get_ip_by_host() and buffers for reentrant functions
|
18-Jun-2004: - 2 fixes for using a port number != 5060 (by Miguel Angel)
|
||||||
|
13-Jun-2004: - fix: get_ip_by_host() and buffer allocation for reentrant
|
||||||
|
gethostbyname_r() functions
|
||||||
|
- if compiled for fli4l 2.0.x, don't use reentrant
|
||||||
|
gethostbyname_r() - in some cases it fails reproduceably
|
||||||
|
when running under fli4l (however, the same binary
|
||||||
|
does behave properly under an old SUSE libc5 system)
|
||||||
12-Jun-2004: - use SIGUSR2 for dmalloc debugging (SIGUSR1 is occupied
|
12-Jun-2004: - use SIGUSR2 for dmalloc debugging (SIGUSR1 is occupied
|
||||||
with old libc5 & threads)
|
with old libc5 & threads)
|
||||||
- reworked calling parameters for passing SIP data
|
- reworked calling parameters for passing SIP data
|
||||||
|
|||||||
8
README
8
README
@ -94,6 +94,14 @@ If siproxd crashes, a stack backtrace usually is helpful to me:
|
|||||||
4) copy-paste all the output and include it in your problem report.
|
4) copy-paste all the output and include it in your problem report.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SENDING A PATCH
|
||||||
|
===============
|
||||||
|
If you send a patch, please make the diff using "diff -Naur" and
|
||||||
|
include the version of siproxd you used to patch. It makes it a lot
|
||||||
|
easier for me to merge it.
|
||||||
|
|
||||||
|
|
||||||
WHAT SIPROXD DOES
|
WHAT SIPROXD DOES
|
||||||
=================
|
=================
|
||||||
Siproxd's purpose is to act as an SIP proxy for softphones located
|
Siproxd's purpose is to act as an SIP proxy for softphones located
|
||||||
|
|||||||
@ -366,12 +366,16 @@ int register_client(sip_ticket_t *ticket, int force_lcl_masq) {
|
|||||||
if (force_lcl_masq) {
|
if (force_lcl_masq) {
|
||||||
struct in_addr addr;
|
struct in_addr addr;
|
||||||
char *addrstr;
|
char *addrstr;
|
||||||
|
char *portstr;
|
||||||
|
|
||||||
if (get_ip_by_ifname(configuration.outbound_if, &addr) !=
|
if (get_ip_by_ifname(configuration.outbound_if, &addr) !=
|
||||||
STS_SUCCESS) {
|
STS_SUCCESS) {
|
||||||
ERROR("can't find outbound interface %s - configuration error?",
|
ERROR("can't find outbound interface %s - configuration error?",
|
||||||
configuration.outbound_if);
|
configuration.outbound_if);
|
||||||
return STS_FAILURE;
|
return STS_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* host part */
|
||||||
addrstr = utils_inet_ntoa(addr);
|
addrstr = utils_inet_ntoa(addr);
|
||||||
DEBUGC(DBCLASS_REG,"masquerading UA %s@%s local %s@%s",
|
DEBUGC(DBCLASS_REG,"masquerading UA %s@%s local %s@%s",
|
||||||
(url1_contact->username) ? url1_contact->username : "*NULL*",
|
(url1_contact->username) ? url1_contact->username : "*NULL*",
|
||||||
@ -379,8 +383,14 @@ int register_client(sip_ticket_t *ticket, int force_lcl_masq) {
|
|||||||
(url1_contact->username) ? url1_contact->username : "*NULL*",
|
(url1_contact->username) ? url1_contact->username : "*NULL*",
|
||||||
addrstr);
|
addrstr);
|
||||||
urlmap[i].masq_url->host=realloc(urlmap[i].masq_url->host,
|
urlmap[i].masq_url->host=realloc(urlmap[i].masq_url->host,
|
||||||
strlen(addrstr)+1);
|
strlen(addrstr)+1);
|
||||||
strcpy(urlmap[i].masq_url->host, addrstr);
|
strcpy(urlmap[i].masq_url->host, addrstr);
|
||||||
|
|
||||||
|
/* port number if required */
|
||||||
|
if (configuration.sip_listen_port != SIP_PORT) {
|
||||||
|
urlmap[i].masq_url->port=realloc(urlmap[i].masq_url->port, 16);
|
||||||
|
sprintf(portstr, "%i", configuration.sip_listen_port);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else { /* if new entry */
|
} else { /* if new entry */
|
||||||
|
|||||||
@ -377,10 +377,13 @@ int main (int argc, char *argv[])
|
|||||||
if (access & ACCESSCTL_REG) {
|
if (access & ACCESSCTL_REG) {
|
||||||
osip_uri_t *url;
|
osip_uri_t *url;
|
||||||
struct in_addr addr1, addr2, addr3;
|
struct in_addr addr1, addr2, addr3;
|
||||||
|
int dest_port;
|
||||||
|
|
||||||
url = osip_message_get_uri(ticket.sipmsg);
|
url = osip_message_get_uri(ticket.sipmsg);
|
||||||
|
dest_port= (url->port)?atoi(url->port):SIP_PORT;
|
||||||
|
|
||||||
if ( (get_ip_by_host(url->host, &addr1) == STS_SUCCESS) &&
|
if ( (get_ip_by_host(url->host, &addr1) == STS_SUCCESS) &&
|
||||||
|
(configuration.sip_listen_port == dest_port) &&
|
||||||
(get_ip_by_ifname(configuration.inbound_if,&addr2) ==
|
(get_ip_by_ifname(configuration.inbound_if,&addr2) ==
|
||||||
STS_SUCCESS) &&
|
STS_SUCCESS) &&
|
||||||
(get_ip_by_ifname(configuration.outbound_if,&addr3) ==
|
(get_ip_by_ifname(configuration.outbound_if,&addr3) ==
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user