Moises Silva [Mon, 20 Dec 2010 19:06:54 +0000 (14:06 -0500)]
freetdm: multiple fixes for the core and analog
* Replace ftdm_channel_flag_t with defines. We reached the 32bit limit where does not seem reliable
to keep using enum.
* Flags member for ftdm_channel_t is now uint64_t
* Added FTDM_CHANNEL_CALL_STARTED flag to indicate when the API user knows about a call
* Refactored raw_data member for ftdm_sigmsg_t. If raw_data needs to be freed it must be requested explicitly
through the autofree member
* Added collected member to ftdm_sigmsg_t for FTDM_SIGEVENT_COLLECTED data instead of using raw_data
* Created define FTDM_DIGITS_LIMIT for DNIS/ANI digits limit
* Fix some stat checks and outdated code in ftmod_analog
* Refactored ftdm_channel_get_history_str API to return the time offsets and time since last state change
* Do not send FTDM_SIGEVENT_STOP and FTDM_SIGEVENT_RELEASED on calls that were never reported to the user
Stefan Knoblich [Sun, 19 Dec 2010 20:09:50 +0000 (21:09 +0100)]
FreeTDM: Stop using raw_data for FTDM_SIGEVENT_SIGSTATUS_CHANGED events.
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>
Moises Silva [Sat, 18 Dec 2010 01:27:37 +0000 (20:27 -0500)]
freetdm: add __USE_BSD to ftdm_os, needed by unistd.h for usleep() and string.h to define strcasecmp()
add -Werror even when the compiler is unknown. This is just a work-around to gcc not being detected
as GNU by our current standalone build (not bootstrapped through FreeSWITCH)
Arnaldo Pereira [Fri, 17 Dec 2010 20:28:57 +0000 (18:28 -0200)]
freetdm: core - moved validation of sigstatus from implementation to core, on sigstatus getters/setters
core - locking the channel on ftdm_channel_get_sig_status() and ftdm_channel_set_sig_status(),
but not on ftdm_span_get_sig_status() nor ftdm_span_set_sig_status()
ftmod_r2 - locking channels on ftdm_r2_get_span_sig_status() and ftdm_r2_set_span_sig_status()
Moises Silva [Fri, 17 Dec 2010 17:57:12 +0000 (12:57 -0500)]
freetdm: add __USE_BSD to ftdm_os, needed by unistd.h for usleep() and string.h to define strcasecmp()
add -Werror even when the compiler is unknown. This is just a work-around to gcc not being detected
ad GNU by our current standalone build (not bootstrapped through FreeSWITCH)
Arnaldo Pereira [Fri, 17 Dec 2010 17:50:11 +0000 (15:50 -0200)]
freetdm: ftmod_r2 - updated ftdm_r2_set_channel_sig_status() to notify the user of signaling changes
just when specified on docs/sigstatus.txt.
also updated ftdm_r2_set_span_sig_status(), so that it uses the former to set channels
status, instead of doing it directly.
Arnaldo Pereira [Wed, 15 Dec 2010 19:43:40 +0000 (17:43 -0200)]
freetdm: ftmod_wanpipe - now receiving ftdm macros for channel polling, instead of using POLLPRI, etc., directly
ftmod_r2 - also using ftdm macros for polling