- 24 8月, 2012 4 次提交
-
-
由 Anthony Minessale 提交于
FS-4525 --resolve ok there was 2 parts to this and I missed one, your client actually uses different to and from in the subscribe where the majority use the target name in the request, to and from, this should make it compat
-
由 Michael S Collins 提交于
-
由 Stefan Knoblich 提交于
Move the B-channel message handling into a per-span I/O thread, to solve most of the problems caused by the intermixed data + control socket interface of mISDN, missing write poll() support on mISDN B-channels and the FreeTDM I/O model. This eliminates most of the audio problems (except for a few minor glitches). A unix stream socket pair is used as a bi-directional pipe replacement (the pipe code is still included in this commit, but will be removed later), with the RX and TX buffer sizes carefully tuned to avoid excessive buffering (= latency) and a deadlock situation between the write() call in ftdm_write() and the code in misdn_span_run() that needs a minimum amount of data in the TX buffer, before sending out a PH_DATA_REQ to the mISDN socket (see misdn_span_run() comments for more details). The minimum size for pipes is PAGE_SIZE (4k), which is ~500 ms worth of audio. A socket pair RX/TX buffer size of 3k, seems to hold a maximum amount of around 500 bytes data in practice, giving us a much lower maximum latency than a unix pipe. (The socket pair might be replaced by a custom ring buffer / fifo data structure to get even more fine grained control of the maximum latency.) The newly introduced span_start / span_stop callbacks in ftdm_io_interface_t are used to start / stop the I/O thread. The callback functions will wait up to 10 seconds for the thread to successfully start up or shut down (using a mutex + condition var). NOTE: Using any of the locking ftdm_span_() functions in the I/O will cause a deadlock between the I/O thread (trying to lock span->mutex) and the thread calling ftdm_start()/_stop() (holding the span->mutex). (The I/O thread currently uses direct span member access to avoid this.) The I/O thread uses the epoll(7) family of functions for event handling. An epoll context is created on startup and all B-channel sockets are registered (READ, PRI and ERR). Before entering the event loop, the I/O thread will send a signal on the condition variable, to indicate it has completed the startup procedure. Incoming b-channel and command pipe events are handled by the event loop. Payload of incoming PH_DATA_IND frames (= audio data) is sent to the rx_audio_pipe_in end of the b-channel's socket pair and, if enough data is available, a PH_DATA_REQ of the same size is sent to the b-channel mISDN socket to transmit audio. A MISDN_CMD_STOP command on the event pipe will wake up the I/O thread and cause it to shut down. All b-channels will be unregistered from the epoll context and the epoll fd closed. The I/O thread terminates itself after signalling the successfull shutdown on the condition variable. TODOs: - Move D-Channel into I/O thread too - Custom FIFO/ring buffer for data (even lower latency) - Improve epoll() code (per-channel struct w/ callback, for epfd.data.ptr) - Use mISDN DSP for audio (e.g. tone generator, dtmf detector, echo cancel) - Use a per-port / span control socket to execute channel commands synchronously, or add misdn_commands (queue?) that can be used that way - Name I/O threads 'mISDN-%SPAN_NAME%', e.g. 'mISDN-M_BRI1' (= add ftdm_thread_set_namef(thread, fmt, ...) / ftdm_thread_set_name(thread, name)) TL;DR: "tweak", solves "booboo" with audio Signed-off-by:
Stefan Knoblich <stkn@openisdn.net>
-
由 Jeff Lenk 提交于
-
- 23 8月, 2012 10 次提交
-
-
由 Anthony Minessale 提交于
-
由 Stefan Knoblich 提交于
Fixes: cc1: warnings being treated as errors src/switch_core_session.c: In function 'switch_core_session_thread_pool_worker': src/switch_core_session.c:1478: warning: format '%ld' expects type 'long int', but argument 9 has type 'switch_size_t' src/switch_core_session.c:1483: warning: format '%ld' expects type 'long int', but argument 9 has type 'switch_size_t' gmake[2]: *** [libfreeswitch_la-switch_core_session.lo] Error 1 Signed-off-by:
Stefan Knoblich <stkn@openisdn.net>
-
由 Anthony Minessale 提交于
-
由 Stefan Knoblich 提交于
Hunt for a free channel for incoming calls that do not preselect a channel (pevent->ring.channel == -1). Verify the preselected channel for calls that do specify a channel and in case the channel is already taken, hunt for a free one, or abort with an error message (if the preselection was exclusive). TE-mode channel selection is the same as before (there's still room for improvement, though, but i'll save that for later). The MSN/DDI filter code is moved into the TE-mode section (only useful there). The duplicate ring detection had to be reworked. We now store the call reference (CRV) in caller_data->call_reference of the selected channel and do a CRV -> channel look up with find_channel_by_cref() at the top of on_ring(). NOTE: This is only lightly tested (NT/TE mode), i'd either have to write a lot of custom code to check it toroughly or the need for a scriptable ISDN stack... Signed-off-by:
Stefan Knoblich <stkn@openisdn.net>
-
由 Anthony Minessale 提交于
-
由 Stefan Knoblich 提交于
Same as ftmod_isdn, '#' key ends overlap receive and moves the incoming call to RING state. Signed-off-by:
Stefan Knoblich <stkn@openisdn.net>
-
由 Anthony Minessale 提交于
FS-4079 FS-4540 regression from 5213c764 please update ASAP if you are running this one
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
- 22 8月, 2012 11 次提交
-
-
由 Jeff Lenk 提交于
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
由 Steve Underwood 提交于
Changed mod_spandsp so it tries to resolve timezone names like Asia/HongKong to a POSIX timezone descriptor string, like other parts of FreeSwitch do.
-
- 21 8月, 2012 8 次提交
-
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
由 Steve Underwood 提交于
Its them damn gremlins.
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
- 20 8月, 2012 7 次提交
-
-
由 Moises Silva 提交于
seems to be causing confusion and annoying users
-
由 Michael Jerris 提交于
-
由 William King 提交于
-
由 William King 提交于
-
由 Anthony Minessale 提交于
-
由 Anthony Minessale 提交于
-
由 Travis Cross 提交于
OS X apparently doesn't support \W. Thanks-to: Peter Olsson <peter.olsson@visionutveckling.se> FS-4528 --resolve
-