21997 Commits

Author SHA1 Message Date
Steve Underwood
f26a4990d7 Various fax_modems.c related improvements 2012-09-11 14:31:27 -04:00
Anthony Minessale
3e0aad8eda FS-4561 send notify with terminate state when we get a SUBSCRIBE with expires 0 2012-09-11 14:31:27 -04:00
Stefan Knoblich
9ac3e78802 FreeTDM: Remove oz{rename,replace}.sh scripts.
Remnants from the olden days of the big OpenZAP migration.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-09-11 14:31:27 -04:00
Anthony Minessale
4dc3e0948e 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 2012-09-11 14:31:27 -04:00
Michael S Collins
09d3f266dc FS-3003: --resolve Add lang config files for es-ES,es-MX,pt-BR,pt-PT (Thanks Francois Delawarde) 2012-09-11 14:31:27 -04:00
Stefan Knoblich
705543c8b4 ftmod_misdn: Use a per-span I/O thread to handle B-channel data.
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>
2012-09-11 14:31:27 -04:00
Jeff Lenk
24813534f0 FS-4219 --resolve 2012-09-11 14:31:27 -04:00
Anthony Minessale
d78a192b0d revert 2012-09-11 14:31:27 -04:00
Stefan Knoblich
59a3df2563 FreeSWITCH: Fix format string error in witch_core_session_thread_pool_worker().
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>
2012-09-11 14:31:27 -04:00
Anthony Minessale
27860f1e29 fix some issues in httapi record parser 2012-09-11 14:31:27 -04:00
Stefan Knoblich
e8d0845376 ftmod_libpri: Implement channel hunting in NT-mode.
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>
2012-09-11 14:31:27 -04:00
Anthony Minessale
7bc19b0c1b fix small bug, init this value to success so you can record without playing a file first 2012-09-11 14:31:27 -04:00
Stefan Knoblich
f3eb7ef05c ftmod_libpri: Check for '#' key to leave overlap receiving state.
Same as ftmod_isdn, '#' key ends overlap receive and moves the incoming
call to RING state.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-09-11 14:31:27 -04:00
Anthony Minessale
9a6b9143f9 FS-4079 FS-4540 regression from 5213c764bbaf779a0b4c4f9feb35f13b5097c6c4 please update ASAP if you are running this one 2012-09-11 14:31:26 -04:00
Anthony Minessale
bbae1afb2d copy channel data into RECV_INFO event 2012-09-11 14:31:26 -04:00
Anthony Minessale
55f1c9b75c FS-4561 please update to this version and retest with new logs if necessary 2012-09-11 14:31:26 -04:00
Anthony Minessale
42a233d76f FS-4079 FS-4540 minor refactoring to fix some minor side effects of recent changes 2012-09-11 14:31:26 -04:00
Jeff Lenk
1208dd0249 vs2010 reswig 2012-09-11 14:31:26 -04:00
Anthony Minessale
6ae99adaeb remove debug 2012-09-11 14:31:26 -04:00
Anthony Minessale
4d5ef2c210 cleanup 2012-09-11 14:31:26 -04:00
Anthony Minessale
f7b953e81d change mod_sofia to use new core based recovery engine 2012-09-11 14:31:26 -04:00
Anthony Minessale
c79643c8c0 move recovery engine up into the core 2012-09-11 14:30:51 -04:00
Anthony Minessale
575f7b6c5b make sure recovering calls start with re-invite instead of invite handler 2012-09-11 14:30:51 -04:00
Anthony Minessale
e27a451cf3 remove unused resurrect code 2012-09-11 14:30:51 -04:00
Anthony Minessale
a05a528952 FS-4559 --resolve 2012-09-11 14:30:51 -04:00
Anthony Minessale
3efcf91983 refactor some unneeded code and move artoo code into the core 2012-09-11 14:30:50 -04:00
Anthony Minessale
16d483f113 update to session thread cache 2012-09-11 14:30:50 -04:00
Steve Underwood
365045bee6 Fixed Cairo's entry in the timezone files
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.
2012-09-11 14:30:50 -04:00
Anthony Minessale
dd467cc0e8 fix endless 5xx race when system is paused or overloaded 2012-09-11 14:30:50 -04:00
Anthony Minessale
f0659b2605 FS-4554 --resolve 2012-09-11 14:30:50 -04:00
Anthony Minessale
4ff7fe0172 FS-4490 --resolve 2012-09-11 14:30:50 -04:00
Anthony Minessale
d281c01167 add timeout 2012-09-11 14:30:50 -04:00
Steve Underwood
ddf85356e3 A line got deleted somewhere along the line. I didn't do it, honest.
Its them damn gremlins.
2012-09-11 14:30:50 -04:00
Anthony Minessale
d12dffea99 ammendment to last commit 2012-09-11 14:30:50 -04:00
Anthony Minessale
8ccf0aef7a cache session threads and reuse them if possible 2012-09-11 14:30:50 -04:00
Anthony Minessale
a235b70a78 FS-4079 FS-4540 please update and test 2012-09-11 14:30:50 -04:00
Moises Silva
b50f8f3e8f mod_sangoma_codec: Remove debug message that is seldom needed anymore and
seems to be causing confusion and annoying users
2012-09-11 14:30:50 -04:00
Michael Jerris
71d99b4953 FS-4264: --resolve make sure directory exists 2012-09-11 14:30:50 -04:00
William King
51178bcf8c git merge failure fixed. wrong side of the merge was kept in previous commit 2012-09-11 14:30:50 -04:00
William King
68f3b12d0c On accounting start and end properly error checking on new handle creation. 2012-09-11 14:30:50 -04:00
Anthony Minessale
8da367d9a1 FS-4548 --resolve such a little patch for a big problem, good find 2012-09-11 14:30:49 -04:00
Anthony Minessale
49baa45c48 add _preconfigured_t38_options as a back door for opal 2012-09-11 14:30:49 -04:00
Travis Cross
1a22ec7222 Fix sed pattern on OS X
OS X apparently doesn't support \W.

Thanks-to: Peter Olsson <peter.olsson@visionutveckling.se>

FS-4528 --resolve
2012-09-11 14:30:49 -04:00
Travis Cross
2dd889c641 Add sound/music debian packaging instructions
Tell people where to go to get the repository for building the
freeswitch-sounds-* and freeswitch-music-* Debian packages, as well as
what to read when they get there.
2012-09-11 14:30:49 -04:00
William King
446a3f2bc6 After chasing down a few memory leaks that two of which were in the freeradius library, the result is more standardized memory cleanup. 2012-09-11 14:30:49 -04:00
Anthony Minessale
f7064f8783 FS-4542 --resolve ok if this causes any problems it should lead us back to this commit 2012-09-11 14:29:58 -04:00
Anthony Minessale
d9aac5ab9d FS-4079 FS-4540 new patch 2012-09-11 14:29:58 -04:00
Jeff Lenk
f273fc1b9f FS-4526 --resolve 2012-09-11 14:29:58 -04:00
Jeff Lenk
6f2c1d7627 FS-4543 --resolve thanks Peter 2012-09-11 14:29:58 -04:00
Steve Underwood
a82b28c37f Fixed a typo in the fixed point image translate code 2012-09-11 14:29:58 -04:00