BelledonneCommunications / linphone-sdk

Mirror for linphone-sdk (https://gitlab.linphone.org/BC/public/linphone-sdk.git)
GNU Affero General Public License v3.0
107 stars 81 forks source link

Linphone will not send ACK if a Ringing response is sent. #451

Open JonathanWilbur opened 1 day ago

JonathanWilbur commented 1 day ago

First of all, please say "Hi" or "Hello", it doesn't cost much.

Hello! (Again) Let me first preface this by saying I am testing this against SIP server software I am currently writing. It is absolutely plausible that there is a bug in my implementation. However, looking at my Wireshark packet captures, examples from the SIP RFCs, and more, it really looks like my implementation should be fine.

  1. Describe the bug (mandatory)

Linphone will not send an ACK request if the server sends a Ringing response. I have modified the server to not send Trying and just send Ringing responses, as well as just sending Trying responses. Only sending Trying, then OK elicits an ACK from Linphone.

Also, if applicable, do you reproduce it with linphone-android latest release from the Play Store?

If the issue is about the SDK (build, issue, etc...) open the ticket in the linphone-sdk repository or one of it's submodules!

  1. To Reproduce (mandatory)

If you are so inclined, here is the server: https://github.com/JonathanWilbur/astrophone

  1. Expected behavior (mandatory)

I expect an ACK response and for the call to proceed.

  1. Please complete the following information (mandatory)

Device: Google Pixel 5 OS: CalyxOS Version of the App: 5.2.5 Version of the SDK: 5.3.47ds Where you did got it from: Play Store Please tell us if your Android is a Lineage OS or another variant.

If you are using a SDK that isn't the latest release, please update first as it's likely your issue is already solved.

  1. SDK logs (mandatory)

https://www.linphone.org:444//tmp/673f3644c069b_b123e47b17fb4a478266.gz

  1. Adb logcat logs (mandatory if native crash)

N/A

  1. Screenshots (optionnal)

N/A

  1. Additional context (optionnal)

None

Thank you in advance for filling bug reports properly!

JonathanWilbur commented 1 day ago

Welp, since GitHub won't allow me to upload a Wireshark packet capture, here is the full UDP stream. Hopefully this helps:

INVITE sip:jonathan@192.168.1.162:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.215:47798;branch=z9hG4bK.vS~qqsS~T;rport
From: "Linphone Android" <sip:linphone.android@192.168.1.215>;tag=mEugH1PST
To: sip:jonathan@192.168.1.162
CSeq: 20 INVITE
Call-ID: REzhq9yM4w
Max-Forwards: 70
Supported: replaces, outbound, gruu, path, record-aware
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO, PRACK, UPDATE
Content-Type: application/sdp
Content-Length: 560
Contact: <sip:192.168.1.215:47798;transport=udp>;+org.linphone.specs="conference/1.0,ephemeral/1.1,groupchat/1.2,lime"
User-Agent: LinphoneAndroid/5.2.5 (Pixel 5) LinphoneSDK/5.3.47 (tags/5.3.47^0)

v=0
o=linphone.android 986 1916 IN IP4 192.168.1.215
s=Talk
c=IN IP4 192.168.1.215
t=0 0
a=rtcp-xr:rcvr-rtt=all:10000 stat-summary=loss,dup,jitt,TTL voip-metrics
a=record:off
m=audio 45732 RTP/AVP 96 97 98 0 8 18 101 99 100
a=rtpmap:96 opus/48000/2
a=fmtp:96 useinbandfec=1
a=rtpmap:97 speex/16000
a=fmtp:97 vbr=on
a=rtpmap:98 speex/8000
a=fmtp:98 vbr=on
a=fmtp:18 annexb=yes
a=rtpmap:101 telephone-event/48000
a=rtpmap:99 telephone-event/16000
a=rtpmap:100 telephone-event/8000
a=rtcp:39770
a=rtcp-fb:* trr-int 5000
a=rtcp-fb:* ccm tmmbr
SIP/2.0 100 Trying
Call-ID: REzhq9yM4w
CSeq: 20 INVITE
From: "Linphone Android" <sip:linphone.android@192.168.1.215>;tag=mEugH1PST
To: sip:jonathan@192.168.1.162
Content-Length: 0
Via: SIP/2.0/UDP 192.168.1.215:47798;branch=z9hG4bK.vS~qqsS~T;rport

SIP/2.0 180 Ringing
Call-ID: REzhq9yM4w
CSeq: 20 INVITE
From: "Linphone Android" <sip:linphone.android@192.168.1.215>;tag=mEugH1PST
To: sip:jonathan@192.168.1.162
Content-Length: 0
Via: SIP/2.0/UDP 192.168.1.215:47798;branch=z9hG4bK.vS~qqsS~T;rport

SIP/2.0 200 OK
Call-ID: REzhq9yM4w
CSeq: 20 INVITE
From: "Linphone Android" <sip:linphone.android@192.168.1.215>;tag=mEugH1PST
To: sip:jonathan@192.168.1.162
Content-Length: 145
Contact: <sip:jonathan@192.168.1.162:5060>
Via: SIP/2.0/UDP 192.168.1.215:47798;branch=z9hG4bK.vS~qqsS~T;rport
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS
Supported: 
Accept: application/sdp
Content-Type: application/sdp
Content-Disposition: session

v=0
o=linphone.android 986 1916 IN IP4 192.168.1.215
s=Talk
c=IN IP4 192.168.1.162
t=0 0
m=audio 43088 RTP/AVP 8
a=sendrecv
a=rtcp:43089
SIP/2.0 200 OK
Call-ID: REzhq9yM4w
CSeq: 20 INVITE
From: "Linphone Android" <sip:linphone.android@192.168.1.215>;tag=mEugH1PST
To: sip:jonathan@192.168.1.162
Content-Length: 145
Contact: <sip:jonathan@192.168.1.162:5060>
Via: SIP/2.0/UDP 192.168.1.215:47798;branch=z9hG4bK.vS~qqsS~T;rport
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS
Supported: 
Accept: application/sdp
Content-Type: application/sdp
Content-Disposition: session

v=0
o=linphone.android 986 1916 IN IP4 192.168.1.215
s=Talk
c=IN IP4 192.168.1.162
t=0 0
m=audio 43088 RTP/AVP 8
a=sendrecv
a=rtcp:43089
SIP/2.0 200 OK
Call-ID: REzhq9yM4w
CSeq: 20 INVITE
From: "Linphone Android" <sip:linphone.android@192.168.1.215>;tag=mEugH1PST
To: sip:jonathan@192.168.1.162
Content-Length: 145
Contact: <sip:jonathan@192.168.1.162:5060>
Via: SIP/2.0/UDP 192.168.1.215:47798;branch=z9hG4bK.vS~qqsS~T;rport
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS
Supported: 
Accept: application/sdp
Content-Type: application/sdp
Content-Disposition: session

v=0
o=linphone.android 986 1916 IN IP4 192.168.1.215
s=Talk
c=IN IP4 192.168.1.162
t=0 0
m=audio 43088 RTP/AVP 8
a=sendrecv
a=rtcp:43089
SIP/2.0 200 OK
Call-ID: REzhq9yM4w
CSeq: 20 INVITE
From: "Linphone Android" <sip:linphone.android@192.168.1.215>;tag=mEugH1PST
To: sip:jonathan@192.168.1.162
Content-Length: 145
Contact: <sip:jonathan@192.168.1.162:5060>
Via: SIP/2.0/UDP 192.168.1.215:47798;branch=z9hG4bK.vS~qqsS~T;rport
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS
Supported: 
Accept: application/sdp
Content-Type: application/sdp
Content-Disposition: session

v=0
o=linphone.android 986 1916 IN IP4 192.168.1.215
s=Talk
c=IN IP4 192.168.1.162
t=0 0
m=audio 43088 RTP/AVP 8
a=sendrecv
a=rtcp:43089
Viish commented 1 day ago

Hi @JonathanWilbur,

FYI all protocols related questions should go to linphone-sdk repository, the linphone-android repository is for issues with the user interface only.

Thanks.