Skip to content

Conversation

@dsandras
Copy link
Contributor

Enjoy

dsandras added 12 commits July 10, 2013 17:51
 - Fixed things when only one peer supports Session-Timers.
 - Fixed timer removal when both peers do not support Session-Timers and a
   timer was fired at some point.
 - Fixed Session-Timers usage in case of re-INVITES.
 - Allow the proxy to negotiate a lower Session-Expires value if configured
   to do so.
The rationale behind this is that many stacks do not implement NAPTR
correctly and rely only on DNS SRV. With misconfigured DNS servers, it
can lead to useless lookups generating potentially long delays.

This can now be disabled if not needed.
A final PUBLISH with expires=0 is now generated when a publication
has expired. This will trigger the transmission of a final state NOTIFY.
Several fixes here:
  - Dialog callbacks are now correctly setup after a restart of
    OpenSIPS. In other words, restarting OpenSIPS will not lead to ghost BLFs
    anymore.
  - Added an option allowing not to publish state change in case of reINVITE.
  - Added an option allowing not to publish state change in trying state.
    In other words, a PUBLISH will be sent only when OpenSIPS has received a
    18x response type and not before.
There is no reason why we should not create new
TCP Connections on notifications. Imagine an architecture with two
redundant servers handling eachother part of the calls. Dialog notifications
would only work when the call is going through the server which handled the
subscription.
This patch relies on received_time being unchanged when a publish is
refreshed.

The aggregation merges the different presence states so that the last
published one is considered as the correct presence status. A primary
presence source can be defined. Call events are also considered as
primary. PUA fake presence generation is considered as secondary.

This is particularly useful with most hardware phones as they are not
able to handle several aggregated presence states.

SNOM phones being buggy, they send a body with a PUBLISH refresh
despite the RFC states it MUST NOT happen. We added a workaround for that.
Without that patch, when OpenSIPS does not find any active dialog
and needs to NOTIFY that state, it correctly sends a full state dialog
information, but the XML document is wrong.

This is the wrong format, the one that was used:
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
version="0" state="partial" entity="sip:752@ds.local.beip.be"><dialog
id="752"><state>terminated</state></dialog></dialog-info>
(info is not partiali but full, dialog id is wrong).

This is the correct format:
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
version="6" state="full" entity="sip:753@ds.local.beip.be"/>
Without this patch, an expired presentity does not trigger the
transmission of a final state NOTIFY.
'Calling' is disturbing especially when the given peer is _receiving_ a
call.
Instead of setting the timer value to 0, resets its value to the
default_timeout setting.
Also update the timer when processing ACK in order for the new timeout
to be taken into account
@saghul
Copy link
Member

saghul commented Jul 12, 2013

Please, open a pull request for each semantic issue, most of the commits you added there have no relation between them and should be handled separately.

@saghul saghul closed this Jul 12, 2013
@46labs 46labs mentioned this pull request Oct 7, 2013
@mnunzi mnunzi mentioned this pull request Nov 7, 2013
@apsaras apsaras mentioned this pull request Mar 26, 2014
@fedorna fedorna mentioned this pull request Apr 4, 2017
@caloveri caloveri mentioned this pull request Jul 24, 2020
@adigeo adigeo mentioned this pull request Apr 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants