Yeah, right, discard the incoming audio data when the b-channel is active...
Reverse the check, so ftdm_read() on an active mISDN b-channel will
be able to read audio data from the RX socketpair and not kill
the call from repeatedly timing out in poll().
Fixes:
[WARNING] mod_freetdm.c:775 Too many timeouts while waiting I/O in channel FreeTDM/1:1/XX device 1:1!
[ERR] mod_freetdm.c:820 clearing IO in channel FreeTDM/1:1/XX device 1:1!
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
epoll_wait() on the B-channel socket may indicate pending messages, but
recvfrom() returns EAGAIN. Retry a few more times (up to 5 retries)
to get the pending message.
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
Fixes:
src/ftmod/ftmod_misdn/ftmod_misdn.c:924:3: error: format '%lx' expects
argument of type 'long unsigned int', but argument 13 has type '__u64'
[-Werror=format]
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
Reported-by: hyper_ch #freetdm @ irc.freenode.net
Various modules which lacked routines to get at the sub-structures now
have them.
The tests have been tweaked so they only access internals where essential.
This bug was cause when answer-supervision is used because now we do not move from DIALING to UP
as soon as the line is ringing, but instead we wait for the CAS bit change
Handle driver events while reading media
ftmod_analog_em:
Initialize read data len to avoid crashing when
the freetdm read function does not read anything
get an EOP, we no longer worry whether the final stages tidy up. This helps
tolerate the increasing number of VoIP calls which hang up before the audio has
flushed down the line.
A few little cleanups.
Use peerhangup flag variable to track whether a hangup has been
initiated by the peer or libpri itself (e.g. Layer 2 timeouts).
These changes fix a couple of problems with hangup events not being
handled properly in some situations:
- Call abort caused by incoming RESTART on a channel in use
- T309 timeout after L2 loss
- Improved hangup handling in libpri-side on_hangup() event handler
and state_advance() (FreeTDM side)
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>