Module: sems
Branch: master
Commit: c397064d717aac147b05675be0080c69be671af2
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=c397064d717aac147b05675be0080c69be671af2

Author: Stefan Sayer <[email protected]>
Committer: Stefan Sayer <[email protected]>
Date:   Mon Aug 23 15:12:40 2010 +0200

session-timer: use headers from AmSipHeaders

---

 core/AmSipHeaders.h                         |    3 ++
 core/plug-in/session_timer/SessionTimer.cpp |   39 ++++++++++++++------------
 2 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/core/AmSipHeaders.h b/core/AmSipHeaders.h
index ae19fa2..e7799ac 100644
--- a/core/AmSipHeaders.h
+++ b/core/AmSipHeaders.h
@@ -21,6 +21,8 @@
 #define SIP_HDR_P_ASSERTED_IDENTITY "P-Asserted-Identity"
 #define SIP_HDR_REFER_TO        "Refer-To"
 #define SIP_HDR_EXPIRES         "Expires"
+#define SIP_HDR_SESSION_EXPIRES "Session-Expires"
+#define SIP_HDR_MIN_SE          "Min-SE"
 #define SIP_HDR_RSEQ            "RSeq"
 #define SIP_HDR_RACK            "RAck"
 #define SIP_HDR_COL(_hdr)       _hdr ":"
@@ -31,4 +33,5 @@
 
 #define SIP_EXT_100REL          "100rel"
 
+#define SIP_HDR_SESSION_EXPIRES_COMPACT "x"
 #endif /* __AMSIPHEADERS_H__ */
diff --git a/core/plug-in/session_timer/SessionTimer.cpp 
b/core/plug-in/session_timer/SessionTimer.cpp
index b84f6f7..06e1c16 100644
--- a/core/plug-in/session_timer/SessionTimer.cpp
+++ b/core/plug-in/session_timer/SessionTimer.cpp
@@ -91,11 +91,11 @@ bool SessionTimer::onSendRequest(const string& method,
                                 unsigned int cseq)
 {
   string m_hdrs = SIP_HDR_COLSP(SIP_HDR_SUPPORTED)  "timer"  CRLF;
-  if  ((method != "INVITE") && (method != "UPDATE"))
+  if  ((method != SIP_METH_INVITE) && (method != SIP_METH_UPDATE))
     goto end;
   
-  m_hdrs += "Session-Expires: "+ int2str(session_interval) +CRLF
-    + "Min-SE: " + int2str(min_se) + CRLF;
+  m_hdrs += SIP_HDR_COLSP(SIP_HDR_SESSION_EXPIRES) + int2str(session_interval) 
+CRLF
+    + SIP_HDR_COLSP(SIP_HDR_MIN_SE) + int2str(min_se) + CRLF;
   
  end:
   hdrs += m_hdrs;
@@ -110,11 +110,12 @@ bool SessionTimer::onSendReply(const AmSipRequest& req,
                               int flags)
 {
   string m_hdrs = SIP_HDR_COLSP(SIP_HDR_SUPPORTED)  "timer"  CRLF;
-  if  ((req.method != "INVITE") && (req.method != "UPDATE")) 
+  if  ((req.method != SIP_METH_INVITE) && (req.method != SIP_METH_UPDATE))
     return false;
     
   // only in 2xx responses to INV/UPD
-  m_hdrs  += "Session-Expires: " + int2str(session_interval) + ";refresher="+
+  m_hdrs  += SIP_HDR_COLSP(SIP_HDR_SESSION_EXPIRES) +
+    int2str(session_interval) + ";refresher="+
     (session_refresher_role==UAC ? "uac":"uas")+CRLF;
     
   if (((session_refresher_role==UAC) && (session_refresher==refresh_remote)) 
@@ -136,7 +137,8 @@ int  SessionTimer::configure(AmConfigReader& conf)
   session_interval = session_timer_conf.getSessionExpires();
   min_se = session_timer_conf.getMinimumTimer();
 
-  DBG("Configured session with EnableSessionTimer = %s, SessionExpires = %u, 
MinimumTimer = %u\n", 
+  DBG("Configured session with EnableSessionTimer = %s, "
+      "SessionExpires = %u, MinimumTimer = %u\n",
       session_timer_conf.getEnableSessionTimer() ? "yes":"no", 
       session_timer_conf.getSessionExpires(),
       session_timer_conf.getMinimumTimer()
@@ -152,7 +154,8 @@ int  SessionTimer::configure(AmConfigReader& conf)
  */
 bool SessionTimerFactory::checkSessionExpires(const AmSipRequest& req) 
 {
-  string session_expires = getHeader(req.hdrs, "Session-Expires", "x", true);
+  string session_expires = getHeader(req.hdrs, SIP_HDR_SESSION_EXPIRES,
+                                    SIP_HDR_SESSION_EXPIRES_COMPACT, true);
 
   if (session_expires.length()) {
     unsigned int i_se;
@@ -171,20 +174,21 @@ bool SessionTimerFactory::checkSessionExpires(const 
AmSipRequest& req)
 
 void SessionTimer::updateTimer(AmSession* s, const AmSipRequest& req) {
 
-  if((req.method == "INVITE")||(req.method == "UPDATE")){
+  if((req.method == SIP_METH_INVITE)||(req.method == SIP_METH_UPDATE)){
     
     remote_timer_aware = 
       key_in_list(getHeader(req.hdrs, SIP_HDR_SUPPORTED),"timer", true);
     
     // determine session interval
-    string sess_expires_hdr = getHeader(req.hdrs, "Session-Expires", "x", 
true);
+    string sess_expires_hdr = getHeader(req.hdrs, SIP_HDR_SESSION_EXPIRES,
+                                       SIP_HDR_SESSION_EXPIRES_COMPACT, true);
     
     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", 
+       WARN("error while parsing " SIP_HDR_SESSION_EXPIRES " header value 
'%s'\n",
             strip_header_params(sess_expires_hdr).c_str()); // exception?
       } else {
        rem_has_sess_expires = true;
@@ -193,11 +197,11 @@ void SessionTimer::updateTimer(AmSession* s, const 
AmSipRequest& req) {
 
     // get Min-SE
     unsigned int i_minse = min_se;
-    string min_se_hdr = getHeader(req.hdrs, "Min-SE", true);
+    string min_se_hdr = getHeader(req.hdrs, SIP_HDR_MIN_SE, true);
     if (!min_se_hdr.empty()) {
       if (str2i(strip_header_params(min_se_hdr),
                i_minse)) {
-       WARN("error while parsing Min-SE header value '%s'\n", 
+       WARN("error while parsing " SIP_HDR_MIN_SE " header value '%s'\n",
             strip_header_params(min_se_hdr).c_str()); // exception?
       }
     }
@@ -251,10 +255,9 @@ void SessionTimer::updateTimer(AmSession* s, const 
AmSipReply& reply)
     return;
   
   // determine session interval
-  string sess_expires_hdr = getHeader(reply.hdrs, "Session-Expires", true);
-  if (sess_expires_hdr.empty())
-    sess_expires_hdr = getHeader(reply.hdrs, "x", true); // compact form
-  
+  string sess_expires_hdr = getHeader(reply.hdrs, SIP_HDR_SESSION_EXPIRES,
+                                     SIP_HDR_SESSION_EXPIRES_COMPACT, true);
+
   session_refresher = refresh_local;
   session_refresher_role = UAC;
   
@@ -262,7 +265,7 @@ void SessionTimer::updateTimer(AmSession* s, const 
AmSipReply& reply)
     unsigned int sess_i_tmp = 0;
     if (str2i(strip_header_params(sess_expires_hdr),
              sess_i_tmp)) {
-      WARN("error while parsing Session-Expires header value '%s'\n", 
+      WARN("error while parsing " SIP_HDR_SESSION_EXPIRES " header value 
'%s'\n",
           strip_header_params(sess_expires_hdr).c_str()); // exception?
     } else {
       // this is forbidden by rfc, but to be sure against 'rogue' proxy/uas
@@ -322,7 +325,7 @@ void SessionTimer::onTimeoutEvent(AmTimeoutEvent* 
timeout_ev)
   } else if (timer_id == ID_SESSION_INTERVAL_TIMER) {
     //     // let the session know it got timeout
     //     onTimeout();
-    DBG("Session Timer: Timerout, ending session.\n");
+    DBG("Session Timer: Timeout, ending session.\n");
     s->dlg.bye();
     s->setStopped();
   } else {

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

Reply via email to