Module: kamailio
Branch: master
Commit: 6502872d35d9bd7043bf54cd1d640dd64ae87115
URL: 
https://github.com/kamailio/kamailio/commit/6502872d35d9bd7043bf54cd1d640dd64ae87115

Author: Daniel-Constantin Mierla <mico...@gmail.com>
Committer: Daniel-Constantin Mierla <mico...@gmail.com>
Date: 2024-08-28T10:52:55+02:00

usrloc: mark contacts with keepalive sent

- properly detect if the contact record has to be expired or not

---

Modified: src/modules/usrloc/ul_keepalive.c
Modified: src/modules/usrloc/usrloc.h

---

Diff:  
https://github.com/kamailio/kamailio/commit/6502872d35d9bd7043bf54cd1d640dd64ae87115.diff
Patch: 
https://github.com/kamailio/kamailio/commit/6502872d35d9bd7043bf54cd1d640dd64ae87115.patch

---

diff --git a/src/modules/usrloc/ul_keepalive.c 
b/src/modules/usrloc/ul_keepalive.c
index e5a013b45a3..16fb66021c1 100644
--- a/src/modules/usrloc/ul_keepalive.c
+++ b/src/modules/usrloc/ul_keepalive.c
@@ -148,7 +148,8 @@ int ul_ka_urecord(urecord_t *ur)
                        }
                }
 
-               if(ul_keepalive_timeout > 0 && uc->last_keepalive > 0) {
+               if(ul_keepalive_timeout > 0 && uc->last_keepalive > 0
+                               && (uc->flags & FL_KASENT)) {
                        if(uc->last_keepalive + ul_keepalive_timeout < tnow) {
                                /* set contact as expired in 10s */
                                LM_DBG("set expired contact on keepalive (%u + 
%u < %u)"
@@ -257,7 +258,9 @@ int ul_ka_urecord(urecord_t *ur)
                                        kabuf_len, kabuf);
                        kamsg.s = kabuf;
                        kamsg.len = kabuf_len;
-                       ul_ka_send(&kamsg, &idst);
+                       if(ul_ka_send(&kamsg, &idst) >= 0) {
+                               uc->flags |= FL_KASENT;
+                       }
                }
        }
        return 0;
diff --git a/src/modules/usrloc/usrloc.h b/src/modules/usrloc/usrloc.h
index 54f7986080d..370baf0da86 100644
--- a/src/modules/usrloc/usrloc.h
+++ b/src/modules/usrloc/usrloc.h
@@ -63,6 +63,7 @@ typedef enum flags
        FL_MEM = 1 << 0,                 /*!< Update memory only */
        FL_DMQRPL = 1 << 1,              /*!< DMQ replication */
        FL_EXPCLB = 1 << 2,              /*!< Expired callback executed */
+       FL_KASENT = 1 << 3,              /*!< Keepalive sent to contact */
        FL_ALL = (int)0xFFFFFFFF /*!< All flags set */
 } flags_t;
 

_______________________________________________
Kamailio (SER) - Development Mailing List
To unsubscribe send an email to sr-dev-le...@lists.kamailio.org

Reply via email to