Loading codec/c++/sip_codets.cpp +48 −3 Original line number Diff line number Diff line Loading @@ -141,6 +141,8 @@ bool is_tel_scheme (const char * pszScheme) { #define SIPREG_HOSTNAME "(" SIPREG_DOMAINLABEL "\\.)*" SIPREG_TOPLABEL "\\.?" #define SIPREG_HCOLON "[ ]*:" SIPREG_SWS #define SIPREG_COMMA SIPREG_SWS "[,]" SIPREG_SWS #define SIPREG_SEMI SIPREG_SWS "[;]" SIPREG_SWS // without leading and trailing whitespace #define SIPREG_QUOTED_STRING "[\"]((" SIPREG_LWS ")|[]!#-[^-~" SIPCHARS_UTF8_NONASCII"]|([\\x5C][\"\\x5C]))*[\"]" Loading Loading @@ -335,11 +337,11 @@ void HostPort::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) void SemicolonParam_List::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_separator ("^;"); static Regex reg_separator ("^" SIPREG_SEMI); if (!buffer.GetBitsLeft()) return; if (reg_separator.Match(buffer)) buffer.SetPosition(buffer.GetPosition() + 8); buffer.SetPosition(buffer.GetPosition() + reg_separator.GetMatchedLength()); else SetHypSize(-2); } Loading Loading @@ -805,7 +807,7 @@ void ContactBody::PreDecode (Buffer& buffer) throw (DecodeError) void ContactAddress_List::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_separator ("^" SIPREG_SWS "[,]" SIPREG_SWS); static Regex reg_separator ("^" SIPREG_COMMA); if (!buffer.GetBitsLeft()) return; Loading Loading @@ -853,6 +855,49 @@ void To::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) } } void Accept::PreDecodeField (int id, Buffer& buffer) throw (DecodeError){ static Regex reg_accept_args ("^[^;,\\r\\n]+"); if (id == id_acceptArgs){ if(reg_accept_args.Match(buffer)) { SetHypFieldIsPresent (id, 1); } else { SetHypFieldIsPresent (id, 0); } } } void AcceptBody::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_media_range ("^[^;,\\r\\n]+"); static Regex reg_semicolon ("^;"); switch (id){ case id_mediaRange: reg_media_range.AssertMatch (buffer, this); SetHypFieldLength(id, reg_media_range.GetMatchedLength()); break; case id_acceptParam: if (reg_semicolon.Match (buffer)) { SetHypFieldIsPresent(id, 1); } else { SetHypFieldIsPresent(id, 0); } } } void AcceptBody_List::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_separator ("^" SIPREG_COMMA); if (!buffer.GetBitsLeft()) return; if (GetSize() == 0) return; // at least one element must be present else if (reg_separator.Match(buffer)) buffer.SetPosition(buffer.GetPosition() + reg_separator.GetMatchedLength()); else SetHypSize(-2); } void NameAddr::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_display_name ("^" SIPREG_DISPLAY_NAME); Loading Loading
codec/c++/sip_codets.cpp +48 −3 Original line number Diff line number Diff line Loading @@ -141,6 +141,8 @@ bool is_tel_scheme (const char * pszScheme) { #define SIPREG_HOSTNAME "(" SIPREG_DOMAINLABEL "\\.)*" SIPREG_TOPLABEL "\\.?" #define SIPREG_HCOLON "[ ]*:" SIPREG_SWS #define SIPREG_COMMA SIPREG_SWS "[,]" SIPREG_SWS #define SIPREG_SEMI SIPREG_SWS "[;]" SIPREG_SWS // without leading and trailing whitespace #define SIPREG_QUOTED_STRING "[\"]((" SIPREG_LWS ")|[]!#-[^-~" SIPCHARS_UTF8_NONASCII"]|([\\x5C][\"\\x5C]))*[\"]" Loading Loading @@ -335,11 +337,11 @@ void HostPort::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) void SemicolonParam_List::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_separator ("^;"); static Regex reg_separator ("^" SIPREG_SEMI); if (!buffer.GetBitsLeft()) return; if (reg_separator.Match(buffer)) buffer.SetPosition(buffer.GetPosition() + 8); buffer.SetPosition(buffer.GetPosition() + reg_separator.GetMatchedLength()); else SetHypSize(-2); } Loading Loading @@ -805,7 +807,7 @@ void ContactBody::PreDecode (Buffer& buffer) throw (DecodeError) void ContactAddress_List::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_separator ("^" SIPREG_SWS "[,]" SIPREG_SWS); static Regex reg_separator ("^" SIPREG_COMMA); if (!buffer.GetBitsLeft()) return; Loading Loading @@ -853,6 +855,49 @@ void To::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) } } void Accept::PreDecodeField (int id, Buffer& buffer) throw (DecodeError){ static Regex reg_accept_args ("^[^;,\\r\\n]+"); if (id == id_acceptArgs){ if(reg_accept_args.Match(buffer)) { SetHypFieldIsPresent (id, 1); } else { SetHypFieldIsPresent (id, 0); } } } void AcceptBody::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_media_range ("^[^;,\\r\\n]+"); static Regex reg_semicolon ("^;"); switch (id){ case id_mediaRange: reg_media_range.AssertMatch (buffer, this); SetHypFieldLength(id, reg_media_range.GetMatchedLength()); break; case id_acceptParam: if (reg_semicolon.Match (buffer)) { SetHypFieldIsPresent(id, 1); } else { SetHypFieldIsPresent(id, 0); } } } void AcceptBody_List::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_separator ("^" SIPREG_COMMA); if (!buffer.GetBitsLeft()) return; if (GetSize() == 0) return; // at least one element must be present else if (reg_separator.Match(buffer)) buffer.SetPosition(buffer.GetPosition() + reg_separator.GetMatchedLength()); else SetHypSize(-2); } void NameAddr::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_display_name ("^" SIPREG_DISPLAY_NAME); Loading