Review Board 1.7.16


res_pjsip_t38: T38 fax fails when using authentication with PJSIP sender

Review Request #4577 - Created April 2, 2015 and submitted

Jonathan Rose
13, trunk
ASTERISK-24933
Reviewers
asterisk-dev
jcolp
Asterisk
Description:
Two Asterisk boxes each have the other as endpoints with authentication set.
First Asterisk box originates a call to the second using the PJSIP endpoint.
The first Asterisk box uses an extension with sendfax, the second uses
an extension with receivefax.

The session starts fairly normally, but resolution never appears in fax show
session output. After a while (~25 seconds) the call drops and the fax fails.
Error messages shown are as follows:
Sender: The call dropped prematurely
Receiver: Disconnected after permitted retries

Note that when not using authentication, the FAX will complete as expected.
When using chan_sip as the sender to a receiver of chan_pjsip, the FAX will
also complete as expected with authentication, but if chan_pjsip is the sender
it will fail regardless of whether the recipient is chan_sip or chan_pjsip.

The problem is caused by duplication of a framehook in res_pjsip_t38 which
occurs on the second invite sent out when responding to the auth challenge.

Fix:
In order to fix this, I added a simple flag to the pjsip session struct that would
be raised when the framehook is first attached to prevent duplication. I wouldn't
be surprised if there were a better way to do this.
I've duplicated and modified the t38 PJSIP fax test in the testsuite to include authentication. It fails without the patch and passes with the patch. I also tested this locally with my two Asterisk machines in the above scenario. I'll be linking the test after putting it on Gerrit.
Total:
6
Open:
0
Resolved:
6
Dropped:
0
Status:
From:
Review request changed
Updated (April 8, 2015, 2:23 p.m.)
  • changed from pending to submitted
Committed in revision 434447

https://reviewboard.asterisk.org/ runs on a server provided by Digium, Inc. and uses bandwidth donated to the open source Asterisk community by API Digital Communications in Huntsville, AL USA.
Please report problems with this site to asteriskteam@digium.com.