Skip to content

User-user information IE missing in SETUP retransmission #7

Open
@flefollcs

Description

@flefollcs

Issue type:
Bug

Description:
When libpri retransmits a SETUP message, UUI Information Element (IE) that was present in first SETUP is missing in second SETUP.

Operating System detail:
(problem not related to OS)

libpri version:
1.6.0 (should also occur with 1.6.1: involved code unchanged)

Information on any third party software:
Asterisk 18.6.0, dahdi 3.1.0

Frequency and timing of the issue:
Always, when SETUP is repeated after T303 timeout.

Symptoms described in specific detail:
Called party receives second SETUP without UUI, although Asterisk provided a UUI value.
The defect is visible in Asterisk with CLI command "pri set debug on span ".

Steps required to reproduce the issue:
This Issue requires, when using libpri with Asterisk :

  • UUI support in Asterisk: compile channels/sig_pri.c with #define SUPPORT_USERUSER
  • UUI activation from Asterisk dialplan: set _USERUSERINFO Channel variable before Dial(),
  • a SETUP retransmission: it can be reproduced with a slow called equipment, or a very short T303 timer configuration.

Workarounds in detail with specific steps:
No workaround.

Debugging output:
Enable "pri set debug on span " before making the call.
First SETUP carries UUI.
Repeated SETUP, after T303 timeout, does not.

Analysis:
The problem comes from libpri q931.c use of useruserinformation field in q931_call structure as a ephemeral storage field.
In outgoing direction, useruserinformation field is cleared as soon as UUI IE is generated (function transmit_user_user()).
Note: in incoming direction, useruserinformation field is also set while decoding IE, and cleared when libpri generates event for application.

I will try to submit a patch soon.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions