Fixed minor bug in watchdog routine.
Fixed memory leak in tone generator. Can preserve module symbols (make modules MODSTRIP=). git-svn-id: http://voip.null.ro/svn/yate@90 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
parent
3b9aed9a6c
commit
5d0b0bb590
|
@ -385,9 +385,11 @@ fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
MODULE_CFLAGS="-fno-exceptions -fno-check-new $RTTI_OPT -fPIC $HAVE_GCC_FORMAT_CHECK"
|
MODULE_CFLAGS="-fno-exceptions -fno-check-new $RTTI_OPT -fPIC $HAVE_GCC_FORMAT_CHECK"
|
||||||
MODULE_LDFLAGS="-export-dynamic -shared -Wl,--retain-symbols-file,/dev/null"
|
MODULE_LDFLAGS="-export-dynamic -shared"
|
||||||
|
MODULE_SYMBOLS="-Wl,--retain-symbols-file,/dev/null"
|
||||||
AC_SUBST(MODULE_CFLAGS)
|
AC_SUBST(MODULE_CFLAGS)
|
||||||
AC_SUBST(MODULE_LDFLAGS)
|
AC_SUBST(MODULE_LDFLAGS)
|
||||||
|
AC_SUBST(MODULE_SYMBOLS)
|
||||||
|
|
||||||
AC_CONFIG_FILES([yate.spec
|
AC_CONFIG_FILES([yate.spec
|
||||||
yate.pc
|
yate.pc
|
||||||
|
|
|
@ -198,7 +198,7 @@ int Engine::run()
|
||||||
{
|
{
|
||||||
Debug(DebugAll,"Engine::run()");
|
Debug(DebugAll,"Engine::run()");
|
||||||
install(new EngineStatusHandler);
|
install(new EngineStatusHandler);
|
||||||
if (s_super_handle)
|
if (s_super_handle >= 0)
|
||||||
install(new EngineSuperHandler);
|
install(new EngineSuperHandler);
|
||||||
loadPlugins();
|
loadPlugins();
|
||||||
Debug(DebugInfo,"plugins.count() = %d",plugins.count());
|
Debug(DebugInfo,"plugins.count() = %d",plugins.count());
|
||||||
|
|
|
@ -163,7 +163,9 @@ Debugger::Debugger(const char *name, const char *format, ...)
|
||||||
va_start(va,format);
|
va_start(va,format);
|
||||||
dbg_output(buf,format,va);
|
dbg_output(buf,format,va);
|
||||||
va_end(va);
|
va_end(va);
|
||||||
|
out_mux.lock();
|
||||||
s_indent++;
|
s_indent++;
|
||||||
|
out_mux.unlock();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_name = 0;
|
m_name = 0;
|
||||||
|
@ -179,7 +181,9 @@ Debugger::Debugger(int level, const char *name, const char *format, ...)
|
||||||
va_start(va,format);
|
va_start(va,format);
|
||||||
dbg_output(buf,format,va);
|
dbg_output(buf,format,va);
|
||||||
va_end(va);
|
va_end(va);
|
||||||
|
out_mux.lock();
|
||||||
s_indent++;
|
s_indent++;
|
||||||
|
out_mux.unlock();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_name = 0;
|
m_name = 0;
|
||||||
|
@ -188,7 +192,9 @@ Debugger::Debugger(int level, const char *name, const char *format, ...)
|
||||||
Debugger::~Debugger()
|
Debugger::~Debugger()
|
||||||
{
|
{
|
||||||
if (m_name) {
|
if (m_name) {
|
||||||
|
out_mux.lock();
|
||||||
s_indent--;
|
s_indent--;
|
||||||
|
out_mux.unlock();
|
||||||
if (s_debugging) {
|
if (s_debugging) {
|
||||||
char buf[64];
|
char buf[64];
|
||||||
::snprintf(buf,sizeof(buf),"<<< %s",m_name);
|
::snprintf(buf,sizeof(buf),"<<< %s",m_name);
|
||||||
|
@ -201,12 +207,16 @@ Debugger::~Debugger()
|
||||||
|
|
||||||
void Debugger::setOutput(void (*outFunc)(const char *))
|
void Debugger::setOutput(void (*outFunc)(const char *))
|
||||||
{
|
{
|
||||||
|
out_mux.lock();
|
||||||
s_output = outFunc ? outFunc : dbg_stderr_func;
|
s_output = outFunc ? outFunc : dbg_stderr_func;
|
||||||
|
out_mux.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Debugger::setIntOut(void (*outFunc)(const char *))
|
void Debugger::setIntOut(void (*outFunc)(const char *))
|
||||||
{
|
{
|
||||||
|
out_mux.lock();
|
||||||
s_intout = outFunc;
|
s_intout = outFunc;
|
||||||
|
out_mux.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Debugger::enableOutput(bool enable)
|
void Debugger::enableOutput(bool enable)
|
||||||
|
|
|
@ -14,6 +14,7 @@ INCLUDES := -I@top_srcdir@
|
||||||
CFLAGS := -O2 @MODULE_CFLAGS@
|
CFLAGS := -O2 @MODULE_CFLAGS@
|
||||||
LDFLAGS:= -L.. -lyate
|
LDFLAGS:= -L.. -lyate
|
||||||
MODFLAGS:= @MODULE_LDFLAGS@
|
MODFLAGS:= @MODULE_LDFLAGS@
|
||||||
|
MODSTRIP:= @MODULE_SYMBOLS@
|
||||||
INCFILES := @top_srcdir@/telengine.h @top_srcdir@/telephony.h @top_srcdir@/yateversn.h
|
INCFILES := @top_srcdir@/telengine.h @top_srcdir@/telephony.h @top_srcdir@/yateversn.h
|
||||||
|
|
||||||
SUBDIRS :=
|
SUBDIRS :=
|
||||||
|
@ -59,8 +60,8 @@ LOCALFLAGS =
|
||||||
LOCALLIBS =
|
LOCALLIBS =
|
||||||
COMPILE = $(CC) $(DEFS) $(DEBUG) $(INCLUDES) $(CFLAGS)
|
COMPILE = $(CC) $(DEFS) $(DEBUG) $(INCLUDES) $(CFLAGS)
|
||||||
LINK = $(CC) $(LDFLAGS)
|
LINK = $(CC) $(LDFLAGS)
|
||||||
MODLINK = $(CC) $(MODFLAGS) $(LDFLAGS)
|
MODLINK = $(CC) $(MODFLAGS) $(MODSTRIP) $(LDFLAGS)
|
||||||
MODCOMP = $(COMPILE) $(MODFLAGS) $(LDFLAGS)
|
MODCOMP = $(COMPILE) $(MODFLAGS) $(MODSTRIP) $(LDFLAGS)
|
||||||
|
|
||||||
prefix = @prefix@
|
prefix = @prefix@
|
||||||
exec_prefix = @exec_prefix@
|
exec_prefix = @exec_prefix@
|
||||||
|
|
|
@ -34,6 +34,7 @@ private:
|
||||||
static const Tone *getBlock(const String &tone);
|
static const Tone *getBlock(const String &tone);
|
||||||
String m_name;
|
String m_name;
|
||||||
const Tone *m_tone;
|
const Tone *m_tone;
|
||||||
|
DataBlock m_data;
|
||||||
unsigned m_brate;
|
unsigned m_brate;
|
||||||
unsigned m_total;
|
unsigned m_total;
|
||||||
unsigned long long m_time;
|
unsigned long long m_time;
|
||||||
|
@ -94,7 +95,7 @@ static const Tone t_specdial[] = { { 7600, tone421hz }, { 400, 0 }, { 0, 0 } };
|
||||||
static const Tone t_ring[] = { { 8000, tone421hz }, { 32000, 0 }, { 0, 0 } };
|
static const Tone t_ring[] = { { 8000, tone421hz }, { 32000, 0 }, { 0, 0 } };
|
||||||
|
|
||||||
ToneSource::ToneSource(const String &tone)
|
ToneSource::ToneSource(const String &tone)
|
||||||
: m_name(tone), m_tone(0), m_brate(16000), m_total(0), m_time(0)
|
: m_name(tone), m_tone(0), m_data(0,480), m_brate(16000), m_total(0), m_time(0)
|
||||||
{
|
{
|
||||||
Debug(DebugAll,"ToneSource::ToneSource(\"%s\") [%p]",tone.c_str(),this);
|
Debug(DebugAll,"ToneSource::ToneSource(\"%s\") [%p]",tone.c_str(),this);
|
||||||
m_tone = getBlock(tone);
|
m_tone = getBlock(tone);
|
||||||
|
@ -148,14 +149,13 @@ void ToneSource::run()
|
||||||
Debug(DebugAll,"ToneSource::run() [%p]",this);
|
Debug(DebugAll,"ToneSource::run() [%p]",this);
|
||||||
unsigned long long tpos = Time::now();
|
unsigned long long tpos = Time::now();
|
||||||
m_time = tpos;
|
m_time = tpos;
|
||||||
DataBlock data(0,480);
|
|
||||||
int samp = 0; // sample number
|
int samp = 0; // sample number
|
||||||
int dpos = 1; // position in data
|
int dpos = 1; // position in data
|
||||||
const Tone *tone = m_tone;
|
const Tone *tone = m_tone;
|
||||||
int nsam = tone->nsamples;
|
int nsam = tone->nsamples;
|
||||||
while (m_tone) {
|
while (m_tone) {
|
||||||
short *d = (short *) data.data();
|
short *d = (short *) m_data.data();
|
||||||
for (unsigned int i = data.length()/2; i--; samp++,dpos++) {
|
for (unsigned int i = m_data.length()/2; i--; samp++,dpos++) {
|
||||||
if (samp >= nsam) {
|
if (samp >= nsam) {
|
||||||
samp = 0;
|
samp = 0;
|
||||||
const Tone *otone = tone;
|
const Tone *otone = tone;
|
||||||
|
@ -181,9 +181,9 @@ void ToneSource::run()
|
||||||
#endif
|
#endif
|
||||||
::usleep((unsigned long)dly);
|
::usleep((unsigned long)dly);
|
||||||
}
|
}
|
||||||
Forward(data,data.length()/2);
|
Forward(m_data,m_data.length()/2);
|
||||||
m_total += data.length();
|
m_total += m_data.length();
|
||||||
tpos += (data.length()*1000000ULL/m_brate);
|
tpos += (m_data.length()*1000000ULL/m_brate);
|
||||||
};
|
};
|
||||||
m_time = Time::now() - m_time;
|
m_time = Time::now() - m_time;
|
||||||
m_time = (m_total*1000000ULL + m_time/2) / m_time;
|
m_time = (m_total*1000000ULL + m_time/2) / m_time;
|
||||||
|
|
|
@ -8,6 +8,7 @@ INCLUDES := -I@top_srcdir@
|
||||||
CFLAGS := -O0 @MODULE_CFLAGS@
|
CFLAGS := -O0 @MODULE_CFLAGS@
|
||||||
LDFLAGS:= -L.. -lyate
|
LDFLAGS:= -L.. -lyate
|
||||||
MODFLAGS:= @MODULE_LDFLAGS@
|
MODFLAGS:= @MODULE_LDFLAGS@
|
||||||
|
MODSTRIP:= @MODULE_SYMBOLS@
|
||||||
|
|
||||||
PROGS = msgsniff.yate randcall.yate
|
PROGS = msgsniff.yate randcall.yate
|
||||||
LIBS =
|
LIBS =
|
||||||
|
@ -17,8 +18,8 @@ LOCALFLAGS =
|
||||||
LOCALLIBS =
|
LOCALLIBS =
|
||||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CFLAGS)
|
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CFLAGS)
|
||||||
LINK = $(CC) $(LDFLAGS)
|
LINK = $(CC) $(LDFLAGS)
|
||||||
MODLINK = $(CC) $(MODFLAGS) $(LDFLAGS)
|
MODLINK = $(CC) $(MODFLAGS) $(MODSTRIP) $(LDFLAGS)
|
||||||
MODCOMP = $(COMPILE) $(MODFLAGS) $(LDFLAGS)
|
MODCOMP = $(COMPILE) $(MODFLAGS) $(MODSTRIP) $(LDFLAGS)
|
||||||
|
|
||||||
prefix = @prefix@
|
prefix = @prefix@
|
||||||
exec_prefix = @exec_prefix@
|
exec_prefix = @exec_prefix@
|
||||||
|
|
|
@ -13,7 +13,7 @@ moddir="@libdir@/yate"
|
||||||
confdir="@sysconfdir@/yate"
|
confdir="@sysconfdir@/yate"
|
||||||
s1="@MODULE_CFLAGS@"
|
s1="@MODULE_CFLAGS@"
|
||||||
s2="-I@includedir@/yate"
|
s2="-I@includedir@/yate"
|
||||||
s3="@MODULE_LDFLAGS@"
|
s3="@MODULE_LDFLAGS@ @MODULE_SYMBOLS@"
|
||||||
s4="-lyate"
|
s4="-lyate"
|
||||||
|
|
||||||
while [ "$#" != 0 ]; do
|
while [ "$#" != 0 ]; do
|
||||||
|
|
|
@ -9,5 +9,5 @@ yate-config=yate-config
|
||||||
Name: Yate
|
Name: Yate
|
||||||
Description: Yet Another Telephony Engine
|
Description: Yet Another Telephony Engine
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Libs: -L${libdir} -lyate @MODULE_LDFLAGS@
|
Libs: -L${libdir} -lyate @MODULE_LDFLAGS@ @MODULE_SYMBOLS@
|
||||||
Cflags: -I${includedir}/yate @MODULE_CFLAGS@
|
Cflags: -I${includedir}/yate @MODULE_CFLAGS@
|
||||||
|
|
Loading…
Reference in New Issue