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>
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>
Remove pri_destroycall() in on_hangup() and
use pri_hangup() instead of the deprecated pri_release().
NOTE: The original patch used PRI_CAUSE_NORMAL_CIRCUIT_CONGESTION for the cause
code, which (without pri_enable_hangup_fix() enabled) emits a RELEASE COMPLETE
message. This version of the patch uses PRI_CAUSE_NORMAL_CLEARING (-1). (stkn)
Additionally, use ftdm_set_state() instead of ftdm_set_state_locked() because the channel
is already locked. (stkn)
Completely-untested-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>
- 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>
- fixed bug in configure.ac to detect ftmod_pritap compilation
- ignore FTDM_SIGEVENT_RELEASED and FTDM_SIGEVENT_INDICATION_COMPLETED in mod_freetdm
- Destroy the state completed interrupt on channel destroy
- Fix analog polarity reversal bug when using 3-way calling or call-swap
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>
- 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>