Skip to content

refer of 2 incoming call failed #817

@michelepra

Description

@michelepra

When jssip build "Refer-to" header not considering rfc3515 (SIP) Refer Method

A REFER request MAY be placed outside the scope of a dialog created with an INVITE. REFER creates a dialog, and MAY be Record-Routed, hence MUST contain a single Contact header field value. REFERs occurring inside an existing dialog MUST follow the Route/Record- Route logic of that dialog.

RFC 3261 12.1.1. and RFC 3261 12.1.2. say how take "local tag" and "remote tag" for dialog and this is correctly implemented

The behaviour of this rfc mismatch is that refer of 2 incoming call failed (eg. in asterisk server)

Solution is to change "Refer-to" builder from

 if (options.replaces)
   {
     replaces = options.replaces._request.call_id;
     replaces += `;to-tag=${options.replaces._to_tag}`;
     replaces += `;from-tag=${options.replaces._from_tag}`;

     replaces = encodeURIComponent(replaces);
   }

to

  if (options.replaces)
   {
     if (options.replaces._dialog) 
     {
       replaces = options.replaces._dialog.id.call_id;
       replaces += `;to-tag=${options.replaces._dialog.id.remote_tag}`;
       replaces += `;from-tag=${options.replaces._dialog.id.local_tag}`;
     } else {
       replaces = options.replaces._request.call_id;
       replaces += `;to-tag=${options.replaces._to_tag}`;
       replaces += `;from-tag=${options.replaces._from_tag}`;
     }

     replaces = encodeURIComponent(replaces);
   }

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