sed: 1: "/#define *SWITCH_VERSIO ...": bad flag in substitute command: '}'
Reported-by: scruz in #freeswitch @ irc.freenode.net
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Doing so will cause a NULL-deref segfault while removing the current span from the
global hash (cur_span->name == NULL) in ftdm_global_destroy().
Remove all the ftdm_safe_free() calls in the custom callback part of ftdm_span_destroy() and
let ftdm_global_destroy() handle that.
NOTE: Also adds a missing ftdm_safe_free(cur_span->dtmf_hangup) to ftdm_global_destroy().
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
On second though (and after reading the code completely),
these are the droids^W^W^W^Wthis is the solution we've been searching for...
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
For complete putenv()-like behaviour.
Further investigation on why putenv() caused EFAULTs on execve() and
segfaults on reload:
putenv(3):
"The string pointed to by string becomes part of the environment,
so altering the string changes the environment."
setenv(3):
"This function makes copies of the strings pointed to by name and value
(by contrast with putenv(3))."
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Use of putenv() to set LADSPA_PATH broke the proccess environment variables, for some
unknown reason, causing segfaults on "reload mod_ladspa" and restarting
FreeSWITCH (with "fcstl shutdown restart").
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
ftdm_copy_string() length parameter needs to include the terminating NUL byte.
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
Tested-by: Stefan Knoblich <stkn@openisdn.net>
Libpri doesn't do that for us, so handle things on our end.
Other parts of the previous patch seem to work fine.
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Adds a new "overlapdial" configuration parameter that enables
incoming overlap dialing when set to "incoming", "yes" or "both" (possible values:
"no", "yes"/"both", "incoming"/"receive", "outgoing"/"send").
(Overlap dialing is disabled by default)
NOTE: only the non-overlap receive case has been tested (= doesn't break existing setups)
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Right... this one is actually part of the core
(.o files included in libfreeswitch).
There are a few more libs included like this, but none
of them should be for external use.
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
To make the API documentation usable (again):
- Rename to "FreeSWITCH API Documentation"
- Remove all external INPUT paths, only scan FreeSWITCH core sources
- Only parse a sane subset of files: *.c *.cc *.cpp *.h *.hh *.hxx
(don't care about any python / whatever files for now)
- Exclude modules (seriously, all the mod_java / mod_managed stuff
turned it into an unusable mess. You need API docs of modules? Add separate doxygen
configurations for them (or specific ones))
- Include src/mod in example search path (for @include etc.), add C/C++
patterns.
- Set up PREDEFINED to fix the massive clusterf*ck that was caused by
SWITCH_DECLARE() and friends.
<End Of Rant>
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Make this thing readable by wasting a couple of bytes for spaces and newlines.
As an added bonus, save some stack space by making usage_string a static const.
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
ftmod_wanpipe.c:
Remove myerrno variable in wanpipe_read(),
snprintf does not set errno (according to the manpage),
so no need to save it (without even using it later).
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
ftdm_io.c:
Remove cut_path() function and call since it didn't seem to
do anything useful anyway.
ftmod_analog.c/ftmod_analog_em.c:
Remove status variable that was used for the result of codec_func(),
but was never checked for errors or returned to the caller.
libteletone_generate.c:
Remove unused variable "var".
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
This fixes the "[ERR] ftmod_libpri.c:128 Don't know how to SABME on a type 0 node" messages
from libpri, when there's no "node"/"mode" parameter set for the span.
NOTE: Now defaulting to CPE mode; EuroISDN on BRI/E1 and 4ESS on J1/T1 lines,
make sure you set dialect/switchtype!
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
Let's hope this fixes it for good and doesn't introduce new problems.
Tested-by: SparFux (#freetdm @ irc.freenode.net)
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
The latter part affects on_ringing(), on_progress() and on_proceeding().
Somewhat experimental and untested (apart from a compile run).
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Using ftdm_log_chan() in ftdm_analog_configure_span() is a bad idea,
since the span won't have any channels assigned.
This bug powered by declaring all variables at the top of the function,
even if they are used in an if branch at the end.
A C99'ish:
if (callwaiting) {
for (unsigned int i = 1; i <= span->span->chan_count; i++) {
/* ... */
}
}
would have alerted the developer adding the log statement.
But since we can't have nice things (thanks MSVC for not supporting C99!)
</rant>
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Default behaviour is unchanged.
Packagers should use this option to install freetdm.pc into
the system's main pkg-config directory (e.g. /usr/lib/pkgconfig).
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Tested-by: Stefan Knoblich <s.knoblich@axsentis.de>
Default behaviour is unchanged.
Packagers should use this option to install freeswitch.pc into
the system's main pkg-config directory (e.g. /usr/lib/pkgconfig).
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Tested-by: Stefan Knoblich <s.knoblich@axsentis.de>
This is a autotools (autoconf/automake/libtool) based skeleton framework for developing
external (= out-of-tree) modules for FreeSWITCH.
Variants of this framework have been used to develop modules like mod_openais, mod_ssh and others.
NOTE: This version of the SDK relies on pkg-config to detect FreeSWITCH
installations.
Other SDKs for external modules should be added in: "src/mod/sdk/<build-system-name>/"
e.g. a scons-based SDK should be put in: "src/mod/sdk/scons/"
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Requested-by: Michal Bielicki - cypromis <michal.bielicki@seventhsignal.de>
"LIBS" in the final fsxs script will be empty now.
We still link against libfreeswitch when building a module,
but we don't explicitly list (some of) its dependency libs anymore
(this list was not complete anyway).
This fixes a bogus /path_to_source/expat.la entry in LIBS that
came from "apu-config --libs".
Tested on Gentoo x86_64 (binutils 2.20.1) and Centos 5.5 (binutils 2.17.50).
Tested-by: Stefan Knoblich <s.knoblich@axsentis.de>
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
- Use the newly introduced FTDM_SPAN_USE_PROCEED_STATE flag and FTDM_CHANNEL_STATE_PROCEED.
- Update ftmod_libpri's state machine table (taken from ftmod_sangoma_isdn).
- Move pri_destroycall() to HANGUP_COMPLETE state.
- Try to get a little bit closer to the ISDN states by using pri_acknowledge() in RINGING,
pri_progress() in PROGRESS and pri_proceeding() in PROCEED state.
- Go to PROGRESS_MEDIA in on_progress() only if there is inband indication available, go to
PROGRESS if not.
- Go to RINGING state in on_ringing() and remove PROGRESS_MEDIA check.
NOTE: One libpri error message and a VETO (PROGRESS -> RINGING) warning to investigate,
but changes seem to work fine nonetheless.
Tested-by: SparFux (#freeswitch / #freeswitch-de @ irc.freenode.net)
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
The raw_data member is used for passing heap allocated data with an event,
(e.g. strings of dtmf data) the memory is freed after the event has been processed.
Recent changes in the event structure added a way to pass sig status changes inline,
so remove the raw_data usage for FTDM_SIGEVENT_SIGSTATUS_CHANGED events.
NOTE: This (finally) fixes a bug in ftmod_libpri that was caused by
the event handling changes (stack corruption due to using free()
on a variable on the stack, which turned into a NULL ptr deref
caused by some compat code in ftdm_io.c:ftdm_span_send_signal().
Compiles and tested on my BRI setup, i did a quick audit of all
places that generate FTDM_SIGEVENT_SIGSTATUS_CHANGED events and
except for the sangoma_boost module there's nothing else that left
using raw_data for this event.
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Fixup zt_read() to handle this case correctly and rework ftmod_libpri's read wrapper function to not fail when the read function returns zero bytes.
NOTE: zt_write() has not been changed (some better way to handle these events is needed then)
This should fix these log messages:
[WARNING] ftdm_io.c:3561 [s1c16][1:16] raw I/O read filed
[CRIT] lpwrap_pri.c:125 span 1 D-READ FAIL! []
[CRIT] lpwrap_pri.c:157 span 1 D-WRITE FAIL! []
[ERR] ftmod_libpri.c:131 Short write: -1/6 (Unknown error 500)
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
I really need to dig deeper here, some libpri events never fire for
incoming calls and i'll have to find out how mod_freetdm or the
FreeSWITCH core change states on the channel...
Anyway, incoming and outgoing calls still work for me (BRI PTMP TE),
so commit this now and let a wider audience do some more testing.
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Tested-by: Stefan Knoblich <s.knoblich@axsentis.de>
ftmod_pritap: Abort before overflowing spanparameters array and initialize to all zero
ftmod_isdn: Fix overflow check, skip over parameters without name or value, initialize spanparameters array to all zero.
ftmod_libpri: Skip over parameters without name or value, initialize spanparameters array to all zero and drop "i < 10" hardcoded check.
This should fix:
2010-11-15 09:24:34.609515 [ERR] ftmod_libpri.c:1741 Unknown parameter '', aborting configuration
2010-11-15 09:24:34.609515 [ERR] mod_freetdm.c:3080 Error configuring FreeTDM span BRI_1
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Reported-by: Ingmar Schraub <is@eseco.de>
"if (ftdm_array_len(spanparameters) == paramindex)" is still off-by-one,
we want to stop at "ftdm_array_len(spanparameters) - 1", before we overwrite
the last (= terminating, NULL) element.
NOTE: i'd prefer an "argc, argv"-style interface here
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
- Add alias names for parameters:
"node" -> "mode"
"dp" -> "ton"
"switch" -> "dialect"
"l1" -> "layer1"
(Switching between ftmod_libpri and ftmod_isdn is easier now.)
- Removed unused members from struct ftdm_libpri_data
and rename misnamed ones
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
- Check D and B-channel availability (could be extended to check B-channel count)
- Drop usage of spri->private_info, use spri->span instead
- Use accessor functions where possible
- Rename ftdmchan to chan where possible
- Various other cleanups
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Tested-by: Stefan Knoblich <s.knoblich@axsentis.de>
Requires libpri-1.4.12_beta1 or newer!
Completely untested, AOC-S/D/E ChargingRequest operations are sent to NT (DTAG BRI PTMP),
but rejected with "Unrecognized Operation".
NOTE: FreeTDM core needs support for this to be useful!
Only AOC-E events are decoded and sent to the log.
To enable:
Set (or add) <param name="opts" value="aoc"> in your
libpri_spans span config.
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
This fixes several issues with parameter handling (e.g. default alaw/ulaw selection being totally useless).
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
Fixes:
- Fix double locking in check_state(): remove ftdm_mutex_(un)lock calls.
New:
- Add lpwrap_init_bri() to initialize libpri in BRI mode
- Use trunk type to determine PRI/BRI and PTP/PTMP mode (no additional configuration required).
- Improve libpri detection code in configure.ac, check whether libpri is usable
and if BRI support is available (needs more work)
Cleanups:
- Whitespace and indentation cleanups
- Rename str2* functions to parse_*
- Simplify libpri_configure_span() option parsing and bail out on error
- Add "ftdm libpri help" command that displays usage information
- Coding style cleanups and other (minor) changes
Known issues:
- BRI PTMP TE Q.921 link does not go beyond TEI ASSIGNED state,
SABME requests are ignored by NT (EuroISDN DTAG, DAHDI-2.3.0.1, vzaphfc)
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
- Use tabs instead of spaces for indentation
- Proper m4 quoting of parameters
- Fix broken AC_ARG_* handling:
--without-foo/--disable-foo set withval="no"/enableval="no"
and the third parameter of the AC_ARG_* macros is always
"user provided an --with*-foo/--*able-foo option" _NOT_ "yes",
while the fourth parameter is "user didn't provide this option"
(= the default if neither --with-foo/--enable-foo nor --without-foo/--disable-foo
has been set)
- Drop FTDM_CFLAGS in MY_CFLAGS (what was that used for anyway?)
- Drop MYLIB
- Drop SOLINK (unused)
- Rename MY_CFLAGS to FTDM_CFLAGS
- Rename all AM_CONDITION variables to HAVE_* for (optional) dependencies
and WANT_* for features
- Reorder mod_LTLIBRARIES lines
- Move some things in configure.ac around to group them
- Add -shared to modules LDFLAGS (we don't need "ftmod_foo.a" static modules, do we?)
- Import ax_compiler_vendor.m4, drop the macro definition from configure.ac
- Add AUTOMAKE_OPTS to Makefile.am and define FreeTDM as a foreign (= non-GNU) project
- Add ACLOCAL_FLAGS to Makefile.am and set AC_CONFIG_MACRO_DIR in configure.ac
custom m4 macros are kept in the build subdirectory
- Enable silent rules for automake-1.11 and newer (use make V=1 to get verbose output)
- configure option --with-modinstdir requires a value now and quits with an error message
if called without one (e.g. "./configure --without-modinstdir" or "./configure --with-modinstdir")
- Add configuration summary screen and category headers for modules in configure output
- Requires non-public development version of libisdn(!)
- Based on older patches from http://oss.axsentis.de/gitweb/?p=ftmod_isdn.git;a=summary
- Rework of ftmod_isdn related buildsystem parts (Makefile.am, configure.in and libpcap.m4)
PR_LocalTimeParameters).
Move nspr libs to AM_LIBADD to make sure they are _after_ libjs.so.1,
so missing PR_* symbols in libjs can be resolved.
Having all those nspr libs in AM_LDFLAGS will make them to end up before
libjs on the final linker commandline.
The wrong order caused the build-time linker to discard nspr,
since nothing had unresolved symbols belonging to it at that point.
(mod_spidermonkey does not use any PR_* functions/objects.)
Compile + load tested on FreeBSD-8.1.