Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG]B2b - Incorrect Rseq on provisional response 183 with SDP in dialog. #3522

Open
devoxy1 opened this issue Nov 19, 2024 · 3 comments
Open
Labels

Comments

@devoxy1
Copy link

devoxy1 commented Nov 19, 2024

I'm testing redirects with b2b on opensips setup. I have A calling to opensips, opensips sends call to B, B responds with 183 with SDP for media which is sent back to A, then B sends 302 Redirect(with Contact C) to opensips, opensips accepts it and sends INVITE to C, C sends 183 with new SDP(new IP), opensips sends it back to A, then C replies with 200 OK.

The scenario is:
A -INVITE--> Opensips -INVITE--> B
A <-183(SDP Cseq1) -- Opensips <-183(SDP) -- B
------ Opensips <-302-- B
------ Opensips --BYE-> B
------ Opensips --INVITE-> C
A <-183(SDP Cseq1) -- Opensips <-183(SDP) -- C
------ Opensips <-200OK-- C

OpenSIPS version you are running

version: opensips 3.4.9 (x86_64/linux)
flags: STATS: On, DISABLE_NAGLE, USE_MCAST, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, HP_MALLOC, DBG_MALLOC, FAST_LOCK-ADAPTIVE_WAIT
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535
poll method support: poll, epoll, sigio_rt, select.
git revision: 448fdf959
main.c compiled on 12:37:50 No
v 19 2024 with gcc 11

Describe the bug
The problem is that opensips doesn't change Rseq number on second 183 with new SDP, which makes A to discard this message and not update new connection address from SDP.
Снимок экрана 2024-11-19 в 18 42 42

To Reproduce

  1. Call from A to B via opensips
  2. B sends 183 with SDP to opensips
  3. opensips sends 183 to A
  4. B sends 302 to redirect the call to C
  5. opensips accepts 302 and send new INVITE to C
  6. C sends 183 with new SDP to opensips
  7. opensips send 183 with new SDP to A Incorrect Rseq
  8. C sends 200OK to opensips
  9. opensips send 200OK to A

Expected behavior
Based on RFC3262

The provisional response to be sent reliably is constructed by the
UAS core according to the procedures of Section 8.2.6 of RFC 3261.
In addition, it MUST contain a Require header field containing the
option tag 100rel, and MUST include an RSeq header field. The value
of the header field for the first reliable provisional response in a
transaction MUST be between 1 and 2**31 - 1. It is RECOMMENDED that
it be chosen uniformly in this range. The RSeq numbering space is
within a single transaction. This means that provisional responses
for different requests MAY use the same values for the RSeq number.

Second 183 goes to A within single transaction and it is not a retransmit, therefore it should have Rseq 2 for A to accept it and change ip for media respectively.

Relevant System Logs

OS/environment information

  • Operating System: Ubuntu 22.04.1 LTS
  • OpenSIPS installation: git
  • other relevant information:

Additional context

Copy link

github-actions bot commented Dec 5, 2024

Any updates here? No progress has been made in the last 15 days, marking as stale. Will close this issue if no further updates are made in the next 30 days.

@github-actions github-actions bot added the stale label Dec 5, 2024
@devoxy1
Copy link
Author

devoxy1 commented Dec 19, 2024

Up

@stale stale bot removed the stale label Dec 19, 2024
Copy link

github-actions bot commented Jan 4, 2025

Any updates here? No progress has been made in the last 15 days, marking as stale. Will close this issue if no further updates are made in the next 30 days.

@github-actions github-actions bot added the stale label Jan 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant