- included compiling support for DMALLOC debugging
- fixed memory leak in proxy.c (39 bytes got lost every proxied message)
This commit is contained in:
parent
b58a815b71
commit
1aada28a60
@ -1,4 +1,9 @@
|
|||||||
0.4.1
|
0.4.1
|
||||||
|
=====
|
||||||
|
19-Oct-2003: - included compiling support for DMALLOC debugging
|
||||||
|
- fixed memory leak in proxy.c (39 bytes got lost
|
||||||
|
every proxied message)
|
||||||
|
0.4.1
|
||||||
=====
|
=====
|
||||||
12-Oct-2003: - released 0.4.1
|
12-Oct-2003: - released 0.4.1
|
||||||
12-Oct-2003: - Local registration of UAs was simply broken. Fixed.
|
12-Oct-2003: - Local registration of UAs was simply broken. Fixed.
|
||||||
|
|||||||
12
configure.in
12
configure.in
@ -15,6 +15,7 @@ dnl 7-Apr-2003 tries added siproxd.spec to autoconf process
|
|||||||
dnl 31-Jul-2003 tries changed to support OSIP2 only
|
dnl 31-Jul-2003 tries changed to support OSIP2 only
|
||||||
dnl 1-Sep-2003 tries check for IPCHAINS
|
dnl 1-Sep-2003 tries check for IPCHAINS
|
||||||
dnl 5-Sep-2003 tries test for pthreads before libosip stuff
|
dnl 5-Sep-2003 tries test for pthreads before libosip stuff
|
||||||
|
dnl 19-Sep-2003 tries DMALLOC support
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
@ -30,7 +31,7 @@ dnl Release Version
|
|||||||
dnl
|
dnl
|
||||||
SPD_MAJOR_VERSION=0
|
SPD_MAJOR_VERSION=0
|
||||||
SPD_MINOR_VERSION=4
|
SPD_MINOR_VERSION=4
|
||||||
SPD_MICRO_VERSION=1
|
SPD_MICRO_VERSION=2
|
||||||
|
|
||||||
SPD_VERSION=$SPD_MAJOR_VERSION.$SPD_MINOR_VERSION.$SPD_MICRO_VERSION
|
SPD_VERSION=$SPD_MAJOR_VERSION.$SPD_MINOR_VERSION.$SPD_MICRO_VERSION
|
||||||
|
|
||||||
@ -79,6 +80,15 @@ for each in $extra_libs; do
|
|||||||
LIBS="$LIBS -L$each";
|
LIBS="$LIBS -L$each";
|
||||||
done
|
done
|
||||||
|
|
||||||
|
dnl
|
||||||
|
dnl add
|
||||||
|
dnl --enable-dmalloc
|
||||||
|
AC_MSG_CHECKING("building with DMALLOC support")
|
||||||
|
AC_ARG_ENABLE(dmalloc,
|
||||||
|
[ --enable-dmalloc build with DMALLOC support],
|
||||||
|
CFLAGS="$CFLAGS -DDMALLOC ";LIBS="-ldmallocth $LIBS";
|
||||||
|
AC_MSG_RESULT(yes), AC_MSG_RESULT(no))
|
||||||
|
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl system specific stuff
|
dnl system specific stuff
|
||||||
|
|||||||
@ -244,6 +244,7 @@ INFO("stopping RTP proxy stream for: %s@%s",
|
|||||||
/* clone the masquerading url */
|
/* clone the masquerading url */
|
||||||
osip_contact_init(&contact);
|
osip_contact_init(&contact);
|
||||||
osip_contact_parse(contact,tmp);
|
osip_contact_parse(contact,tmp);
|
||||||
|
osip_free(tmp);
|
||||||
osip_uri_free(contact->url);
|
osip_uri_free(contact->url);
|
||||||
osip_uri_clone(urlmap[i].masq_url, &contact->url);
|
osip_uri_clone(urlmap[i].masq_url, &contact->url);
|
||||||
osip_list_add(request->contacts,contact,-1);
|
osip_list_add(request->contacts,contact,-1);
|
||||||
@ -602,7 +603,6 @@ if (configuration.debuglevel)
|
|||||||
|
|
||||||
/* free content length resource and include new one*/
|
/* free content length resource and include new one*/
|
||||||
osip_content_length_free(mymsg->content_length);
|
osip_content_length_free(mymsg->content_length);
|
||||||
// osip_free(mymsg->content_length);
|
|
||||||
mymsg->content_length=NULL;
|
mymsg->content_length=NULL;
|
||||||
sprintf(clen,"%i",strlen(bodybuff));
|
sprintf(clen,"%i",strlen(bodybuff));
|
||||||
sts = osip_message_set_content_length(mymsg, clen);
|
sts = osip_message_set_content_length(mymsg, clen);
|
||||||
|
|||||||
@ -25,6 +25,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <signal.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
@ -57,6 +58,18 @@ PACKAGE"-"VERSION"-"BUILDSTR" (c) 2002-2003 Thomas Ries\n" \
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* module local data
|
||||||
|
*/
|
||||||
|
static int dmalloc_dump=0;
|
||||||
|
static int exit_program=0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* local prototypes
|
||||||
|
*/
|
||||||
|
static void sighandler(int sig);
|
||||||
|
|
||||||
|
|
||||||
int main (int argc, char *argv[])
|
int main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int sts;
|
int sts;
|
||||||
@ -73,6 +86,25 @@ int main (int argc, char *argv[])
|
|||||||
int config_search=1; /* search the config file */
|
int config_search=1; /* search the config file */
|
||||||
int cmdline_debuglevel=0;
|
int cmdline_debuglevel=0;
|
||||||
|
|
||||||
|
struct sigaction act;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* setup signal handlers
|
||||||
|
*/
|
||||||
|
act.sa_handler=sighandler;
|
||||||
|
sigemptyset(&act.sa_mask);
|
||||||
|
act.sa_flags=SA_RESTART;
|
||||||
|
if (sigaction(SIGTERM, &act, NULL)) {
|
||||||
|
ERROR("Failed to install SIGTERM handler");
|
||||||
|
}
|
||||||
|
if (sigaction(SIGINT, &act, NULL)) {
|
||||||
|
ERROR("Failed to install SIGINT handler");
|
||||||
|
}
|
||||||
|
if (sigaction(SIGUSR1, &act, NULL)) {
|
||||||
|
ERROR("Failed to install SIGUSR1 handler");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* prepare default configuration
|
* prepare default configuration
|
||||||
*/
|
*/
|
||||||
@ -180,12 +212,26 @@ INFO("daemonizing done (pid=%i)", getpid());
|
|||||||
/*
|
/*
|
||||||
* Main loop
|
* Main loop
|
||||||
*/
|
*/
|
||||||
while (1) {
|
while (!exit_program) {
|
||||||
|
|
||||||
DEBUGC(DBCLASS_BABBLE,"going into sip_wait\n");
|
DEBUGC(DBCLASS_BABBLE,"going into sip_wait\n");
|
||||||
while (sipsock_wait()==0) {
|
while (sipsock_wait()<=0) {
|
||||||
/* got no input, here by timeout. do aging */
|
/* got no input, here by timeout. do aging */
|
||||||
register_agemap();
|
register_agemap();
|
||||||
|
|
||||||
|
/* dump memory stats if requested to do so */
|
||||||
|
if (dmalloc_dump) {
|
||||||
|
dmalloc_dump=0;
|
||||||
|
#ifdef DMALLOC
|
||||||
|
INFO("SIGUSR1 - DMALLOC statistics is dumped");
|
||||||
|
dmalloc_log_stats();
|
||||||
|
dmalloc_log_unfreed();
|
||||||
|
#else
|
||||||
|
INFO("SIGUSR1 - DMALLOC support is not compiled in");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exit_program) goto exit_prg;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* got input, process */
|
/* got input, process */
|
||||||
@ -324,6 +370,22 @@ INFO("got packet [%i bytes]from %s [%s]", i, inet_ntoa(from.sin_addr), tmp);}
|
|||||||
osip_message_free(my_msg);
|
osip_message_free(my_msg);
|
||||||
|
|
||||||
} /* while TRUE */
|
} /* while TRUE */
|
||||||
|
exit_prg:
|
||||||
|
INFO("properly terminating siproxd");
|
||||||
|
|
||||||
|
return 0;
|
||||||
} /* main */
|
} /* main */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Signal handler
|
||||||
|
*
|
||||||
|
* this one is called asynchronously whevener a registered
|
||||||
|
* signal is applied. Just set a flag and don't do any funny
|
||||||
|
* things here.
|
||||||
|
*/
|
||||||
|
static void sighandler(int sig) {
|
||||||
|
if (sig==SIGTERM) exit_program=1;
|
||||||
|
if (sig==SIGINT) exit_program=1;
|
||||||
|
if (sig==SIGUSR1) dmalloc_dump=1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|||||||
@ -18,6 +18,10 @@
|
|||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef DMALLOC
|
||||||
|
#include <dmalloc.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* function returns STS_* status values vvv */
|
/* function returns STS_* status values vvv */
|
||||||
|
|
||||||
/* sock.c */
|
/* sock.c */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user