Make sure to turn off any ring signals when a call is answered.
Only clear active MGCP signals when entering Connected state, not if already in that state. git-svn-id: http://yate.null.ro/svn/yate/trunk@4077 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
parent
15f7933a3a
commit
6a6308f573
|
@ -1486,10 +1486,11 @@ bool MGCPCircuit::status(Status newStat, bool sync)
|
|||
}
|
||||
allowRtpChange = SignallingCircuit::status() == Connected &&
|
||||
hasLocalRtp() && m_localRtpChanged;
|
||||
if (SignallingCircuit::status() != Connected
|
||||
&& mySpan()->rqntType() != MGCPSpan::RqntNone
|
||||
&& !(fxs() || fxo()))
|
||||
sendRequest(0,mySpan()->rqntStr());
|
||||
if (SignallingCircuit::status() != Connected) {
|
||||
if (mySpan()->rqntType() != MGCPSpan::RqntNone && !(fxs() || fxo()))
|
||||
sendRequest(0,mySpan()->rqntStr());
|
||||
sendPending();
|
||||
}
|
||||
}
|
||||
if (!allowRtpChange && (newStat == m_statusReq) &&
|
||||
((SignallingCircuit::status() == newStat) || !sync)) {
|
||||
|
@ -1682,12 +1683,11 @@ bool MGCPCircuit::sendEvent(SignallingCircuitEvent::Type type, NamedList* params
|
|||
case SignallingCircuitEvent::Connect:
|
||||
if (params)
|
||||
setParams(*params);
|
||||
sendPending();
|
||||
return status(Connected,!params || params->getBoolValue("sync",true));
|
||||
case SignallingCircuitEvent::RingBegin:
|
||||
return fxs() && sendPending("L/rg");
|
||||
case SignallingCircuitEvent::RingEnd:
|
||||
return fxs() && sendPending();
|
||||
return sendPending();
|
||||
case SignallingCircuitEvent::Polarity:
|
||||
return fxs() && sendRequest("L/lsa");
|
||||
case SignallingCircuitEvent::OffHook:
|
||||
|
|
|
@ -1105,6 +1105,7 @@ bool SigChannel::msgAnswered(Message& msg)
|
|||
// Start echo training
|
||||
SignallingCircuit* cic = getCircuit();
|
||||
if (cic) {
|
||||
cic->sendEvent(SignallingCircuitEvent::RingEnd);
|
||||
String value;
|
||||
cic->setParam("echotrain",value);
|
||||
}
|
||||
|
@ -1430,6 +1431,7 @@ void SigChannel::evAnswer(SignallingEvent* event)
|
|||
// Start echo training
|
||||
SignallingCircuit* cic = getCircuit();
|
||||
if (cic) {
|
||||
cic->sendEvent(SignallingCircuitEvent::RingEnd);
|
||||
String value;
|
||||
cic->setParam("echotrain",value);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue