Module: sip-router
Branch: 3.1
Commit: 47b7207587e2af9262a68a539549589a6ed207d9
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=47b7207587e2af9262a68a539549589a6ed207d9

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date:   Wed Jan  5 15:11:08 2011 +0100

kcore: extended supported parser with eventlist
(cherry picked from commit 6baa261b6494736034af8f5b90446237500eee79)

---

 lib/kcore/parse_supported.c |   15 ++++++++++++---
 lib/kcore/parse_supported.h |   12 ++++++++----
 2 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/lib/kcore/parse_supported.c b/lib/kcore/parse_supported.c
index e655d30..8720397 100644
--- a/lib/kcore/parse_supported.c
+++ b/lib/kcore/parse_supported.c
@@ -92,10 +92,19 @@ static inline int parse_supported_body(str *body, unsigned 
int *sup)
                                }
                                break;
 
-                       /* unknown */
+                       /* extra supported or unknown */
                        default:
-                               /* skip element */
-                               for (; pos < len && !IS_DELIM(p); ++pos, ++p);
+                               if(pos+SUPPORTED_EVENTLIST_LEN<=len
+                                               && strncasecmp(p, 
SUPPORTED_EVENTLIST_STR,
+                                                       
SUPPORTED_EVENTLIST_LEN)==0
+                                               && IS_DELIM(p+9) ) {
+                                       *sup |= F_SUPPORTED_EVENTLIST;
+                                       pos += SUPPORTED_EVENTLIST_LEN + 1;
+                                       p   += SUPPORTED_EVENTLIST_LEN + 1;
+                               } else {
+                                       /* skip element */
+                                       for (; pos < len && !IS_DELIM(p); 
++pos, ++p);
+                               }
                                break;
                }
        }
diff --git a/lib/kcore/parse_supported.h b/lib/kcore/parse_supported.h
index c618b8d..126f56e 100644
--- a/lib/kcore/parse_supported.h
+++ b/lib/kcore/parse_supported.h
@@ -39,14 +39,15 @@
 #include "../../mem/mem.h"
 
 
-#define F_SUPPORTED_PATH       (1 << 0)
-#define F_SUPPORTED_100REL     (1 << 1)
-#define F_SUPPORTED_TIMER      (1 << 2)
+#define F_SUPPORTED_PATH               (1 << 0)
+#define F_SUPPORTED_100REL             (1 << 1)
+#define F_SUPPORTED_TIMER              (1 << 2)
+#define F_SUPPORTED_EVENTLIST   (1 << 3)
 
 #define SUPPORTED_PATH_STR             "path"
 #define SUPPORTED_PATH_LEN             (sizeof(SUPPORTED_PATH_STR)-1)
 
-/* RFC 3262 */
+/* RFC 3262 (PRACK) */
 #define SUPPORTED_100REL_STR   "100rel"
 #define SUPPORTED_100REL_LEN   (sizeof(SUPPORTED_100REL_STR)-1)
 
@@ -54,6 +55,9 @@
 #define SUPPORTED_TIMER_STR            "timer"
 #define SUPPORTED_TIMER_LEN            (sizeof(SUPPORTED_TIMER_STR)-1)
 
+/* RFC 4662 (RLS) */
+#define SUPPORTED_EVENTLIST_STR  "eventlist"
+#define SUPPORTED_EVENTLIST_LEN  (sizeof(SUPPORTED_EVENTLIST_STR)-1)
 
 #define get_supported(p_msg) \
        ((p_msg)->supported ? ((struct 
supported_body*)(p_msg)->supported->parsed)->supported_all : 0)


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to