Module: sip-router Branch: 3.1 Commit: 47b7207587e2af9262a68a539549589a6ed207d9 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=47b72075...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com 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)