therikb31 created an issue (kamailio/kamailio#4296)

For network-initiated UE de-registration, ims_registrar_scscf is populating the Subscription-State header of the NOTIFY message as active;expires=3581 instead of terminated.

Description

We are simulating a network-initiated UE de-registration by sending a Registration-Termination Request from the HSS to the S-CSCF for a registered IMSI.

Call Flow:

  1. UE registers to the IMS core
  2. S-CSCF performs third-party registration with the Application Server on behalf of the UE
  3. Application Server subscribes to Event: reg for the registered IMSI
  4. HSS sends a Registration-Termination Request for network-initiated UE de-registration
  5. S-CSCF sends a NOTIFY to subscribers for the IMS_REGISTRAR_CONTACT_DEREGISTERED event (issue with the NOTIFY SIP message)

Observation:

  1. NOTIFY messages are initiated to subscribers of Event: reg, but instead of having the Subscription-State header set to terminated, we observe the value active;expires=3581.
    (Image for the NOTIFY SIP message packet is attached below)

image.png (view on web)

Troubleshooting

Reproduction

To reproduce this, we are performing the following steps:

  1. Performing SIP registration of the UE with the target S-CSCF node
  2. Sending SUBSCRIBE requests from a third-party Application Server and the UE with Event: reg to get notified of registration events
  3. HSS sends a Registration-Termination Request to the target S-CSCF for the registered IMSI (network-initiated de-registration)

Debugging Data

Log Messages

While going through the logs, we find that this header is being populated based on the expiry timer and a comparison with the current timestamp:

2025-06-20 12:45:20 | 19(56) DEBUG: ims_registrar_scscf [registrar_notify.c:1716]: create_notifications(): Expires is greater than current time! Subscription state: [active;expires=3581]

SIP Traffic

Possible Solutions

Workaround:

In the create_notifications() method of src/modules/ims_registrar_scscf/registrar_notify.c,
when populating the Subscription-State header, if the event_type is 10 (IMS_REGISTRAR_CONTACT_DEREGISTERED), we can populate Subscription-State as terminated.

Additional Information



Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: <kamailio/kamailio/issues/4296@github.com>