diff --git a/q931.c b/q931.c index e732052..416ef9d 100644 --- a/q931.c +++ b/q931.c @@ -8771,6 +8771,18 @@ static int post_handle_q931_message(struct pri *ctrl, struct q931_mh *mh, struct (c->ourcallstate != Q931_CALL_STATE_OVERLAP_SENDING) && (c->ourcallstate != Q931_CALL_STATE_CALL_DELIVERED) && (c->ourcallstate != Q931_CALL_STATE_OUTGOING_CALL_PROCEEDING)) { + if (mh->msg == Q931_PROGRESS + && c->ourcallstate == Q931_CALL_STATE_ACTIVE + && ctrl->switchtype == PRI_SWITCH_QSIG) { + /* + * Q.SIG is odd to allow PROGRESS when in the Active state since + * the media path is already open. Ignore it since it doesn't + * convey anything very useful. Maybe they will stop doing it. + * + * See ECMA-143 Section 10.1.7.2. + */ + break; + } q931_status(ctrl,c,PRI_CAUSE_WRONG_MESSAGE); break; }