[Home]

Summary:ASTERISK-27971: res_pjsip: Implement additional SIP RFCs for Google Voice trunk compatability
Reporter:Nick French (naf)Labels:pjsip
Date Opened:2018-07-18 07:11:51Date Closed:2018-10-25 05:51:57
Priority:MajorRegression?
Status:Closed/CompleteComponents:pjproject/pjsip Resources/res_pjsip_outbound_registration
Versions:GIT Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) gvoice.txt
Description:Background: Google Voice trunks are currently supported in Asterisk via chan_motif. Google has announced they plan to migrate away from the XMPP protocol used by chan_motif to a new SIP-based protocol. However, their new SIP servers use additional standards extending what is commonly implemented in a SIP UAC.

The following additional features required by the new Google Voice SIP registrar are not currently implemented in Asterisk:
- Service-Routes (RFC 3608)
- P-Preferred-Identity (RFC 3325)
- Outbound supported header (RFC 5626)
- OAuth / Bearer token authentication (draft-ietf-sipcore-sip-authn-02)
- Mechanisms to use separate TLS transports for separate registrations and their associated message dialog
- (optional) User-configurable additions to SIP Contact header
Comments:By: Asterisk Team (asteriskteam) 2018-07-18 07:11:53.010-0500

Thanks for creating a report! The issue has entered the triage process. That means the issue will wait in this status until a Bug Marshal has an opportunity to review the issue. Once the issue has been reviewed you will receive comments regarding the next steps towards resolution.

A good first step is for you to review the [Asterisk Issue Guidelines|https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines] if you haven't already. The guidelines detail what is expected from an Asterisk issue report.

Then, if you are submitting a patch, please review the [Patch Contribution Process|https://wiki.asterisk.org/wiki/display/AST/Patch+Contribution+Process].

By: Dmitriy Serov (Demon) 2018-08-24 11:57:58.240-0500

After applying patch and using new "outbound_registration" for all endpoints where is the BUG.

INVITE sip:791519XXXX@multifon.ru SIP/2.0
Supported: 100rel, timer, replaces, norefersub
Session-Expires: 1800
Min-SE: 90
Route: <sip:srv_d24948@193.201.XX.XX:8080;transport=udp;lr>;line=zxzfbbm
P-Preferred-Identity:
Max-Forwards: 70
User-Agent: ruVoIP.net PBX
Content-Type: application/sdp
Content-Length:   245

Header "P-Preferred-Identity" has empty value.
As the result: SIP/2.0 400 Invalid P-Preferred-Identity
It is not google voice account.

By: Dmitriy Serov (Demon) 2018-10-10 05:24:48.739-0500

attachments gvoice.txt

Strange sequence REGISTER packets.
1. 423 Interval Too Brief
func handle_registration_response (res/res_pjsip_outbound_registration.c) does not have a handler of code 423.
I think there needs to be processing this code and call schedule_retry

2. Second REGISTER packet does not have "Supported: path"


By: Dmitriy Serov (Demon) 2018-10-10 14:13:18.176-0500

res/res_pjsip_outbound_registration.c
static const char *fetch_google_access_token(const struct ast_sip_auth *auth)
char buf[4096];

4096 - sometimes goole returns more then 4096 bytes answer. I don't know why.
As the result:
ERROR[17668]: res_pjsip_outbound_registration.c:1462 in fetch_google_access_token: Could not retrieve Google OAuth 2.0 authentication

The same error in res_xmpp.c

Every asterisk update needs to patch: buffer size to 8192 bytes.

By: Friendly Automation (friendly-automation) 2018-10-25 05:51:59.405-0500

Change 9505 merged by Joshua Colp:
res_pjsip: Implement additional SIP RFCs for Google Voice trunk compatability

[https://gerrit.asterisk.org/9505|https://gerrit.asterisk.org/9505]