Release 0.2.5

This commit is contained in:
Thomas Ries 2002-12-06 00:13:51 +00:00
parent 1a50659b63
commit 051c9dab99
6 changed files with 45 additions and 17 deletions

View File

@ -1,8 +1,12 @@
0.2.5
=====
- 2-Dec-2002: - fixed a bug in check_vialoop. It wrongly claimed
to have detected a loop when using the old-style
IP address based inboud/outboud definitions.
- 6-Dec-2002: - released 0.2.5 (major bugfixes)
- Bugfix: MSN messenger 4.6 caused a segfault due to
non supplied username in contact header during
registration. (Credits to Dhiraj Bhuyan for the hint)
Included additional tests in that area.
- 4-Dec-2002: - fixed a major (but stupid) bug in check_vialoop. Siproxd
wrongly claimed to have detected a loop...
0.2.4
=====

View File

@ -1,5 +1,8 @@
Release Notes for siproxd-0.2.5
===============================
This release mainly fixes some annoying (and stupid) bugs.
See the ChangeLog for details.
- supports Linux and FreeBSD (other BSD derivates not tested)
- SIP Proxy for SIP based softphones hidden behind a masquerading firewall
- Includes an RTP data stream proxy for *incomming* audio data
@ -30,17 +33,26 @@ Reported to build on:
- OpenBSD 2.9
Interoperability (tested with softphones):
Reported interoperability (tested with softphones):
- Linphone (http://www.linphone.org)
- Kphone (http://www.wirlab.net/kphone/)
- MSN messenger 4.6
-----
md5sum for siproxd-0.2.5.tar.gz:
md5sum for siproxd-0.2.5.tar.gz: 042986602efeaaa77a14bb0b1a416083
md5sum for siproxd-0.2.5-1rh60.i386.rpm:
md5sum for siproxd-0.2.5-1rh72.i386.rpm:
md5sum for siproxd-0.2.5-1.src.rpm:
GnuPG signature for siproxd-0.2.5.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
iEYEABECAAYFAj3v6zkACgkQPOYHDi42pIppDACfc0Bw3vcNFE5+qSHIzMacdHow
kGgAn11c69ibc9bLd+la9j0otqxhAWIK
=OZ6c
-----END PGP SIGNATURE-----

View File

@ -170,7 +170,8 @@ int proxy_request (sip_t *request) {
/* found a mapping entry */
if (i<URLMAP_SIZE) {
DEBUGC(DBCLASS_PROXY, "rewrote Contact header %s@%s -> %s@%s",
contact->url->username, contact->url->host,
(contact->url->username) ? contact->url->username : "*NULL*",
(contact->url->host) ? contact->url->host : "*NULL*",
urlmap[i].masq_url->username, urlmap[i].masq_url->host);
/* remove old entry */
list_remove(request->contacts,0);
@ -365,7 +366,8 @@ int proxy_response (sip_t *response) {
/* found a mapping entry */
if (i<URLMAP_SIZE) {
DEBUGC(DBCLASS_PROXY, "rewrote Contact header %s@%s -> %s@%s",
contact->url->username, contact->url->host,
(contact->url->username) ? contact->url->username : "*NULL*",
(contact->url->host) ? contact->url->host : "*NULL*",
urlmap[i].masq_url->username, urlmap[i].masq_url->host);
/* remove old entry */
list_remove(response->contacts,0);

View File

@ -128,10 +128,10 @@ int register_client(sip_t *my_msg) {
url2_contact=urlmap[i].true_url;
if ( (compare_url(url1_to, url2_to)==STS_SUCCESS) &&
(strcmp(url1_contact->username, url2_contact->username)==0) &&
(strcmp(url1_contact->host, url2_contact->host )==0) ) {
(compare_url(url1_contact, url2_contact)==STS_SUCCESS) ) {
DEBUGC(DBCLASS_REG, "found entry for %s@%s at slot=%i, exp=%li",
url1_contact->username,url1_contact->host,
(url1_contact->username) ? url1_contact->username : "*NULL*",
(url1_contact->host) ? url1_contact->host : "*NULL*",
i, urlmap[i].expires-time_now);
break;
}

View File

@ -196,7 +196,7 @@ int main (int argc, char *argv[])
/* integrity checks */
sts=security_check(buff, i);
if (sts != 0) continue; /* there are no resources to free */
if (sts != STS_SUCCESS) continue; /* there are no resources to free */
/* parse the received message */
sts=msg_init(&my_msg);

View File

@ -118,7 +118,7 @@ int check_vialoop (sip_t *my_msg) {
via_t *via;
via = (via_t *) list_get (my_msg->vias, pos);
sts = is_via_local (via);
if (sts == 1) found_own_via=1;
if (sts == STS_TRUE) found_own_via=1;
pos++;
}
return (found_own_via)? STS_TRUE : STS_FALSE;
@ -307,17 +307,27 @@ int compare_url(url_t *url1, url_t *url2) {
ERROR("compare_url: NULL ptr: url1=0x%p, url2=0x%p",url1, url2);
return STS_FAILURE;
}
if ((url1->username == NULL) || (url2->username == NULL)) {
ERROR("compare_url: NULL ptr: url1->username=0x%p, url2->username=0x%p",
url1->username, url2->username);
return STS_FAILURE;
}
if ((url1->host == NULL) || (url2->host == NULL)) {
ERROR("compare_url: NULL ptr: url1->host=0x%p, url2->host=0x%p",
url1->host, url2->host);
return STS_FAILURE;
}
if ((url1->username == NULL) || (url2->username == NULL)) {
/* Broken(?) MSN messenger - does not supply a user name part.
So we simply compare the host part then */
WARN("compare_url: NULL username pointer: MSN messenger is known to "
"trigger this one! [url1->username=0x%p, url2->username=0x%p]",
url1->username, url2->username);
DEBUGC(DBCLASS_BABBLE, "comparing broken urls (no user): %s -> %s",
url1->host, url2->host);
if (strcmp(url1->host, url2->host)==0) {
sts = STS_SUCCESS;
} else {
sts = STS_FAILURE;
}
}
/* we have a proper URL */
/* comparison of hosts should be based on IP addresses, no? */
DEBUGC(DBCLASS_BABBLE, "comparing urls: %s@%s -> %s@%s",
url1->username, url1->host, url2->username, url2->host);