Author: sayer
Date: 2010-04-23 20:24:33 +0200 (Fri, 23 Apr 2010)
New Revision: 1820

Modified:
   trunk/core/plug-in/session_timer/SessionTimer.cpp
Log:
fixed calculation of actual session timer interval, if remote end does not 
support SST

Modified: trunk/core/plug-in/session_timer/SessionTimer.cpp
===================================================================
--- trunk/core/plug-in/session_timer/SessionTimer.cpp   2010-04-22 14:40:59 UTC 
(rev 1819)
+++ trunk/core/plug-in/session_timer/SessionTimer.cpp   2010-04-23 18:24:33 UTC 
(rev 1820)
@@ -184,12 +184,15 @@
     // determine session interval
     string sess_expires_hdr = getHeader(req.hdrs, "Session-Expires", "x");
     
+    bool rem_has_sess_expires = false;
     unsigned int rem_sess_expires=0; 
     if (!sess_expires_hdr.empty()) {
       if (str2i(strip_header_params(sess_expires_hdr),
                rem_sess_expires)) {
        WARN("error while parsing Session-Expires header value '%s'\n", 
             strip_header_params(sess_expires_hdr).c_str()); // exception?
+      } else {
+       rem_has_sess_expires = true;
       }
     }
 
@@ -205,17 +208,20 @@
     }
 
     // calculate actual se
+    session_interval = session_timer_conf.getSessionExpires();
 
     if (i_minse > min_se)
       min_se = i_minse;
 
-    if (rem_sess_expires < min_se) {
+    if (rem_has_sess_expires && (rem_sess_expires < min_se)) {
       session_interval = min_se;
     } else {
-      if (rem_sess_expires < session_interval)
+      if (rem_has_sess_expires && (rem_sess_expires < session_interval))
        session_interval = rem_sess_expires;
     }
      
+    DBG("using actual session interval %u\n", session_interval);
+
     // determine session refresher -- cf rfc4028 Table 2
     // only if the remote party supports timer and asks 
     // to be refresher we will let the remote party do it. 

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to