Loading codec/c++/common_sip_msrp.h +16 −2 Original line number Diff line number Diff line Loading @@ -18,13 +18,27 @@ namespace t3devlib { namespace gen { #define SIPREG_SLASH SIPREG_SWS "[/]" SIPREG_SWS #define SIPREG_COLON SIPREG_SWS "[:]" SIPREG_SWS #define SIPCHARS_ALFA "A-Za-z" #define SIPCHARS_ALFANUM "0-9" SIPCHARS_ALFA #define SIPCHARS_HEXA "0-9A-Fa-f" // host name #define SIPREG_TOPLABEL "[" SIPCHARS_ALFA "]([" SIPCHARS_ALFANUM "\\-]*[" SIPCHARS_ALFANUM "])?" #define SIPREG_DOMAINLABEL "[" SIPCHARS_ALFANUM "]([" SIPCHARS_ALFANUM "\\-]*[" SIPCHARS_ALFANUM "])?" #define SIPREG_HOSTNAME "(" SIPREG_DOMAINLABEL "\\.)*" SIPREG_TOPLABEL "\\.?" //quoted-string // without leading and trailing whitespace #define SIPCHARS_UTF8_NONASCII "\x80-\xFD" #define SIPREG_QUOTED_PAIR "[\\x5C][\\x00-\\x09\\x0B\\x0C\\x0E-\\x7F]" #define SIPREG_QUOTED_STRING "[\"]((" SIPREG_LWS ")|[]!#-[^-~" SIPCHARS_UTF8_NONASCII"]|(" SIPREG_QUOTED_PAIR "))*[\"]" // IPv6 #define SIPREG_HEX4 "[" SIPCHARS_HEXA "]{1,4}" #define SIPREG_HEXSEQ SIPREG_HEX4 "([:]" SIPREG_HEX4 ")*" #define SIPREG_HEXPART "(((" SIPREG_HEXSEQ ")?[:]{2}(" SIPREG_HEXSEQ ")?)|(" SIPREG_HEXSEQ "))" #define SIPREG_IP6 "[[]" SIPREG_HEXPART "([:]" SIPREG_IP4 ")?[]]" #define SIPREG_IP6_INTERNAL SIPREG_HEXPART "([:]" SIPREG_IP4 ")?" #define SIPREG_IP6 "[[]" SIPREG_IP6_INTERNAL "[]]" //IPv4 #define SIPREG_IP4 "([0-9]{1,3}\\.){3}[0-9]{1,3}" Loading codec/c++/msrp_codets.cpp +963 −117 File changed.Preview size limit exceeded, changes collapsed. Show changes codec/c++/msrp_codets.h +5 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ T3DEVLIB_BASIC_DEFINITION (LibMsrp_TypesAndValues, Token, Charstring); T3DEVLIB_ASCII_INTEGER_DEFINITION (LibMsrp_TypesAndValues, Namespace, Unsigned); //type integer StatusCode; T3DEVLIB_ASCII_INTEGER_DEFINITION (LibMsrp_TypesAndValues, StatusCode, Unsigned); //type charstring Qop_Value; T3DEVLIB_BASIC_DEFINITION (LibMsrp_TypesAndValues, Qop_Value, Charstring); //type charstring SessionID; T3DEVLIB_BASIC_DEFINITION (LibMsrp_TypesAndValues, SessionID, Charstring); //type octetstring Data; Loading Loading @@ -88,7 +90,9 @@ public: #define DEFINITIONS_MimeExtensionField() std::string m_shname; #define DEFINITIONS_Digest() bool b_needComma; #define DEFINITIONS_DigestResponse() bool b_needComma; #define DEFINITIONS_AInfo() bool bIsFirstField; }} //namespaces #endif Loading codec/c++/sdp_codets.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -579,6 +579,7 @@ private: SDP_ATTRIBUTE_ADD (fmtp); SDP_ATTRIBUTE_ADD (rtpmap); SDP_ATTRIBUTE_ADD (rtcp); SDP_ATTRIBUTE_ADD (msrp); // RFC 3312 attributes SDP_ATTRIBUTE_ADD (curr); Loading Loading @@ -1428,6 +1429,14 @@ void SDP_attribute_rtcp::PreEncode (Buffer& buffer) throw (EncodeError) csAttrName.Encode(buffer); } void SDP_attribute_msrp::PreEncode (Buffer& buffer) throw (EncodeError) { Charstring csAttrName; csAttrName.SetValue("msrp:"); csAttrName.Encode(buffer); } void SDP_attribute_unknown::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError) { Charstring csColon; Loading codec/c++/sip_codets.cpp +43 −22 Original line number Diff line number Diff line Loading @@ -204,13 +204,9 @@ bool is_tel_scheme (const char * pszScheme) { // Definition of character classes used to be used in the regular expressions // (within []) #define SIPCHARS_MARK "\\-_.!~*'()" #define SIPCHARS_ALFA "A-Za-z" #define SIPCHARS_ALFANUM "0-9" SIPCHARS_ALFA #define SIPCHARS_HEXA "0-9A-Fa-f" #define SIPCHARS_UNRESERVED SIPCHARS_ALFANUM SIPCHARS_MARK #define SIPCHARS_RESERVED ";/?:@&=+$," #define SIPCHARS_USER_UNRESERVED "&=+$,;?/" #define SIPCHARS_UTF8_NONASCII "\x80-\xFD" #define SIPCHARS_TEXT_UTF8CHAR "\x21-\xFD" Loading @@ -235,27 +231,20 @@ bool is_tel_scheme (const char * pszScheme) { // header name #define SIPREG_HNAME "(?:[][/?:+$" SIPCHARS_UNRESERVED "]|" SIPREG_ESCAPED ")+" // host name #define SIPREG_TOPLABEL "[" SIPCHARS_ALFA "]([" SIPCHARS_ALFANUM "\\-]*[" SIPCHARS_ALFANUM "])?" #define SIPREG_DOMAINLABEL "[" SIPCHARS_ALFANUM "]([" SIPCHARS_ALFANUM "\\-]*[" SIPCHARS_ALFANUM "])?" #define SIPREG_HOSTNAME "(" SIPREG_DOMAINLABEL "\\.)*" SIPREG_TOPLABEL "\\.?" // without leading and trailing whitespace #define SIPREG_QUOTED_PAIR "[\\x5C][\\x00-\\x09\\x0B\\x0C\\x0E-\\x7F]" #define SIPREG_QUOTED_STRING "[\"]((" SIPREG_LWS ")|[]!#-[^-~" SIPCHARS_UTF8_NONASCII"]|(" SIPREG_QUOTED_PAIR "))*[\"]" #define SIPREG_DISPLAY_NAME "((" SIPREG_TOKEN "(" SIPREG_LWS SIPREG_TOKEN ")*)|(" SIPREG_QUOTED_STRING "))" #define SIPREG_COMMENT "[(]((" SIPREG_LWS ")|[\\x21-\\x5B]|[\\x5D-\\xFD]|(" SIPREG_QUOTED_PAIR "))*[)]" // IPv4 #define SIPREG_IP4 "([0-9]{1,3}\\.){3}[0-9]{1,3}" //#define SIPREG_IP4 "([0-9]{1,3}\\.){3}[0-9]{1,3}" // IPv6 #define SIPREG_HEX4 "[" SIPCHARS_HEXA "]{1,4}" #define SIPREG_HEXSEQ SIPREG_HEX4 "([:]" SIPREG_HEX4 ")*" #define SIPREG_HEXPART "(((" SIPREG_HEXSEQ ")?[:]{2}(" SIPREG_HEXSEQ ")?)|(" SIPREG_HEXSEQ "))" #define SIPREG_IP6 "[[]" SIPREG_HEXPART "([:]" SIPREG_IP4 ")?[]]" //#define SIPREG_HEX4 "[" SIPCHARS_HEXA "]{1,4}" //#define SIPREG_HEXSEQ SIPREG_HEX4 "([:]" SIPREG_HEX4 ")*" //#define SIPREG_HEXPART "(((" SIPREG_HEXSEQ ")?[:]{2}(" SIPREG_HEXSEQ ")?)|(" SIPREG_HEXSEQ "))" //#define SIPREG_IP6 "[[]" SIPREG_HEXPART "([:]" SIPREG_IP4 ")?[]]" // host #define SIPREG_HOST "((" SIPREG_HOSTNAME ")|(" SIPREG_IP4 ")|(" SIPREG_IP6 "))" Loading Loading @@ -1132,6 +1121,7 @@ private: SIP_HEADER_ADD (P-Charging-Function-Addresses, , pChargingFunctionAddresses, P_CHARGING_FUNCTION_ADDRESSES_E); SIP_HEADER_ADD (P-Charging-Vector, , pChargingVector, P_CHARGING_VECTOR_E); SIP_HEADER_ADD (Refer-To, r, referTo, REFER_TO_E); SIP_HEADER_ADD (Refer-Sub, r, referSub, REFER_SUB_E); SIP_HEADER_ADD (Replaces, , replaces, REPLACES_E); SIP_HEADER_ADD (Service-Route, , serviceRoute, SERVICE_ROUTE_E); SIP_HEADER_ADD (Accept-Contact, a, acceptContact, ACCEPT_CONTACT_E); Loading Loading @@ -1218,6 +1208,7 @@ void MessageHeader::PreDecodeField (Buffer& buffer) throw (DecodeError) std::ofstream logfile("C:\\Temp\\LibSip.log", ios::app); logfile << "MessageHeader::PreDecodeField: " << id << std::endl; logfile << "MessageHeader::PreDecodeField:MatchedName: " << reg_header_name.GetMatchedString(1) << std::endl; logfile << "MessageHeader::PreDecodeField:hdrId: " << id << std::endl; logfile.close(); Loading Loading @@ -1335,6 +1326,7 @@ const char* FieldName::msFields[] = { "P_MEDIA_AUTHORIZATION_E", "PRIVACY_E", "P_ASSERTED_ID_E", "REFER_SUB_E", "P_PREFERRED_ID_E", "REASON_E", "REFER_TO_E", Loading Loading @@ -2837,8 +2829,14 @@ void ContentType::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) static Regex reg_ctype ("^" SIPREG_TOKEN "/" SIPREG_TOKEN "(" SIPREG_SEMI SIPREG_M_PARAMETER ")*"); if (id == id_mediaType) { std::ofstream logfile("C:\\Temp\\LibSip.log", ios::app); logfile << "ContentType::PreDecodeField: id:" << id << std::endl; logfile << "ContentType::PreDecodeField: matching at:" << buffer.GetPosition() << std::endl; reg_ctype.AssertMatch (buffer, this); SetHypFieldLength (id, reg_ctype.GetMatchedLength()); logfile << "ContentType::PreDecodeField: matched:" << reg_ctype.GetMatchedString() << std::endl; logfile.close(); } } Loading Loading @@ -3757,6 +3755,27 @@ void ReferTo::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) } } void ReferSub::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError) { Charstring csSemi; csSemi.SetValue(";"); if(field_id == id_referSubParams && IsPresent(id_referSubParams)) { csSemi.Encode(buffer); } } void ReferSub::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_separator ("^" SIPREG_SEMI); switch (id) { case id_referSubParams: SetHypFieldIsPresent (id, reg_separator.Match (buffer) ? 1 : 0); break; } } void AcRcValue_List::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError) { Charstring csComma; Loading Loading @@ -3885,7 +3904,7 @@ void MinSE::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) } } void IntegerList::PreEncode (Buffer& buffer) throw (EncodeError) void StringList::PreEncode (Buffer& buffer) throw (EncodeError) { Charstring csIndexEqual; csIndexEqual.SetValue("index="); Loading @@ -3893,7 +3912,7 @@ void IntegerList::PreEncode (Buffer& buffer) throw (EncodeError) csIndexEqual.Encode(buffer); } void IntegerList::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError) void StringList::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError) { Charstring csDot; csDot.SetValue("."); Loading @@ -3901,16 +3920,18 @@ void IntegerList::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeErr if(field_id != 0) { csDot.Encode(buffer); } GetField(field_id).SetFormat(Integer::AsciiDecimal); } void IntegerList::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) void StringList::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_num ("^[0-9]+"); SetSize (GetSize() + 1); GetField(id).SetFormat(Integer::AsciiDecimal); reg_num.AssertMatch(buffer, this); SetHypFieldLength(reg_num.GetMatchedLength()); } void IntegerList::PostDecodeField (int id, Buffer& buffer) throw (DecodeError) void StringList::PostDecodeField (int id, Buffer& buffer) throw (DecodeError) { Regex reg_dot ("^[\\x2E]"); Loading Loading
codec/c++/common_sip_msrp.h +16 −2 Original line number Diff line number Diff line Loading @@ -18,13 +18,27 @@ namespace t3devlib { namespace gen { #define SIPREG_SLASH SIPREG_SWS "[/]" SIPREG_SWS #define SIPREG_COLON SIPREG_SWS "[:]" SIPREG_SWS #define SIPCHARS_ALFA "A-Za-z" #define SIPCHARS_ALFANUM "0-9" SIPCHARS_ALFA #define SIPCHARS_HEXA "0-9A-Fa-f" // host name #define SIPREG_TOPLABEL "[" SIPCHARS_ALFA "]([" SIPCHARS_ALFANUM "\\-]*[" SIPCHARS_ALFANUM "])?" #define SIPREG_DOMAINLABEL "[" SIPCHARS_ALFANUM "]([" SIPCHARS_ALFANUM "\\-]*[" SIPCHARS_ALFANUM "])?" #define SIPREG_HOSTNAME "(" SIPREG_DOMAINLABEL "\\.)*" SIPREG_TOPLABEL "\\.?" //quoted-string // without leading and trailing whitespace #define SIPCHARS_UTF8_NONASCII "\x80-\xFD" #define SIPREG_QUOTED_PAIR "[\\x5C][\\x00-\\x09\\x0B\\x0C\\x0E-\\x7F]" #define SIPREG_QUOTED_STRING "[\"]((" SIPREG_LWS ")|[]!#-[^-~" SIPCHARS_UTF8_NONASCII"]|(" SIPREG_QUOTED_PAIR "))*[\"]" // IPv6 #define SIPREG_HEX4 "[" SIPCHARS_HEXA "]{1,4}" #define SIPREG_HEXSEQ SIPREG_HEX4 "([:]" SIPREG_HEX4 ")*" #define SIPREG_HEXPART "(((" SIPREG_HEXSEQ ")?[:]{2}(" SIPREG_HEXSEQ ")?)|(" SIPREG_HEXSEQ "))" #define SIPREG_IP6 "[[]" SIPREG_HEXPART "([:]" SIPREG_IP4 ")?[]]" #define SIPREG_IP6_INTERNAL SIPREG_HEXPART "([:]" SIPREG_IP4 ")?" #define SIPREG_IP6 "[[]" SIPREG_IP6_INTERNAL "[]]" //IPv4 #define SIPREG_IP4 "([0-9]{1,3}\\.){3}[0-9]{1,3}" Loading
codec/c++/msrp_codets.cpp +963 −117 File changed.Preview size limit exceeded, changes collapsed. Show changes
codec/c++/msrp_codets.h +5 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ T3DEVLIB_BASIC_DEFINITION (LibMsrp_TypesAndValues, Token, Charstring); T3DEVLIB_ASCII_INTEGER_DEFINITION (LibMsrp_TypesAndValues, Namespace, Unsigned); //type integer StatusCode; T3DEVLIB_ASCII_INTEGER_DEFINITION (LibMsrp_TypesAndValues, StatusCode, Unsigned); //type charstring Qop_Value; T3DEVLIB_BASIC_DEFINITION (LibMsrp_TypesAndValues, Qop_Value, Charstring); //type charstring SessionID; T3DEVLIB_BASIC_DEFINITION (LibMsrp_TypesAndValues, SessionID, Charstring); //type octetstring Data; Loading Loading @@ -88,7 +90,9 @@ public: #define DEFINITIONS_MimeExtensionField() std::string m_shname; #define DEFINITIONS_Digest() bool b_needComma; #define DEFINITIONS_DigestResponse() bool b_needComma; #define DEFINITIONS_AInfo() bool bIsFirstField; }} //namespaces #endif Loading
codec/c++/sdp_codets.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -579,6 +579,7 @@ private: SDP_ATTRIBUTE_ADD (fmtp); SDP_ATTRIBUTE_ADD (rtpmap); SDP_ATTRIBUTE_ADD (rtcp); SDP_ATTRIBUTE_ADD (msrp); // RFC 3312 attributes SDP_ATTRIBUTE_ADD (curr); Loading Loading @@ -1428,6 +1429,14 @@ void SDP_attribute_rtcp::PreEncode (Buffer& buffer) throw (EncodeError) csAttrName.Encode(buffer); } void SDP_attribute_msrp::PreEncode (Buffer& buffer) throw (EncodeError) { Charstring csAttrName; csAttrName.SetValue("msrp:"); csAttrName.Encode(buffer); } void SDP_attribute_unknown::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError) { Charstring csColon; Loading
codec/c++/sip_codets.cpp +43 −22 Original line number Diff line number Diff line Loading @@ -204,13 +204,9 @@ bool is_tel_scheme (const char * pszScheme) { // Definition of character classes used to be used in the regular expressions // (within []) #define SIPCHARS_MARK "\\-_.!~*'()" #define SIPCHARS_ALFA "A-Za-z" #define SIPCHARS_ALFANUM "0-9" SIPCHARS_ALFA #define SIPCHARS_HEXA "0-9A-Fa-f" #define SIPCHARS_UNRESERVED SIPCHARS_ALFANUM SIPCHARS_MARK #define SIPCHARS_RESERVED ";/?:@&=+$," #define SIPCHARS_USER_UNRESERVED "&=+$,;?/" #define SIPCHARS_UTF8_NONASCII "\x80-\xFD" #define SIPCHARS_TEXT_UTF8CHAR "\x21-\xFD" Loading @@ -235,27 +231,20 @@ bool is_tel_scheme (const char * pszScheme) { // header name #define SIPREG_HNAME "(?:[][/?:+$" SIPCHARS_UNRESERVED "]|" SIPREG_ESCAPED ")+" // host name #define SIPREG_TOPLABEL "[" SIPCHARS_ALFA "]([" SIPCHARS_ALFANUM "\\-]*[" SIPCHARS_ALFANUM "])?" #define SIPREG_DOMAINLABEL "[" SIPCHARS_ALFANUM "]([" SIPCHARS_ALFANUM "\\-]*[" SIPCHARS_ALFANUM "])?" #define SIPREG_HOSTNAME "(" SIPREG_DOMAINLABEL "\\.)*" SIPREG_TOPLABEL "\\.?" // without leading and trailing whitespace #define SIPREG_QUOTED_PAIR "[\\x5C][\\x00-\\x09\\x0B\\x0C\\x0E-\\x7F]" #define SIPREG_QUOTED_STRING "[\"]((" SIPREG_LWS ")|[]!#-[^-~" SIPCHARS_UTF8_NONASCII"]|(" SIPREG_QUOTED_PAIR "))*[\"]" #define SIPREG_DISPLAY_NAME "((" SIPREG_TOKEN "(" SIPREG_LWS SIPREG_TOKEN ")*)|(" SIPREG_QUOTED_STRING "))" #define SIPREG_COMMENT "[(]((" SIPREG_LWS ")|[\\x21-\\x5B]|[\\x5D-\\xFD]|(" SIPREG_QUOTED_PAIR "))*[)]" // IPv4 #define SIPREG_IP4 "([0-9]{1,3}\\.){3}[0-9]{1,3}" //#define SIPREG_IP4 "([0-9]{1,3}\\.){3}[0-9]{1,3}" // IPv6 #define SIPREG_HEX4 "[" SIPCHARS_HEXA "]{1,4}" #define SIPREG_HEXSEQ SIPREG_HEX4 "([:]" SIPREG_HEX4 ")*" #define SIPREG_HEXPART "(((" SIPREG_HEXSEQ ")?[:]{2}(" SIPREG_HEXSEQ ")?)|(" SIPREG_HEXSEQ "))" #define SIPREG_IP6 "[[]" SIPREG_HEXPART "([:]" SIPREG_IP4 ")?[]]" //#define SIPREG_HEX4 "[" SIPCHARS_HEXA "]{1,4}" //#define SIPREG_HEXSEQ SIPREG_HEX4 "([:]" SIPREG_HEX4 ")*" //#define SIPREG_HEXPART "(((" SIPREG_HEXSEQ ")?[:]{2}(" SIPREG_HEXSEQ ")?)|(" SIPREG_HEXSEQ "))" //#define SIPREG_IP6 "[[]" SIPREG_HEXPART "([:]" SIPREG_IP4 ")?[]]" // host #define SIPREG_HOST "((" SIPREG_HOSTNAME ")|(" SIPREG_IP4 ")|(" SIPREG_IP6 "))" Loading Loading @@ -1132,6 +1121,7 @@ private: SIP_HEADER_ADD (P-Charging-Function-Addresses, , pChargingFunctionAddresses, P_CHARGING_FUNCTION_ADDRESSES_E); SIP_HEADER_ADD (P-Charging-Vector, , pChargingVector, P_CHARGING_VECTOR_E); SIP_HEADER_ADD (Refer-To, r, referTo, REFER_TO_E); SIP_HEADER_ADD (Refer-Sub, r, referSub, REFER_SUB_E); SIP_HEADER_ADD (Replaces, , replaces, REPLACES_E); SIP_HEADER_ADD (Service-Route, , serviceRoute, SERVICE_ROUTE_E); SIP_HEADER_ADD (Accept-Contact, a, acceptContact, ACCEPT_CONTACT_E); Loading Loading @@ -1218,6 +1208,7 @@ void MessageHeader::PreDecodeField (Buffer& buffer) throw (DecodeError) std::ofstream logfile("C:\\Temp\\LibSip.log", ios::app); logfile << "MessageHeader::PreDecodeField: " << id << std::endl; logfile << "MessageHeader::PreDecodeField:MatchedName: " << reg_header_name.GetMatchedString(1) << std::endl; logfile << "MessageHeader::PreDecodeField:hdrId: " << id << std::endl; logfile.close(); Loading Loading @@ -1335,6 +1326,7 @@ const char* FieldName::msFields[] = { "P_MEDIA_AUTHORIZATION_E", "PRIVACY_E", "P_ASSERTED_ID_E", "REFER_SUB_E", "P_PREFERRED_ID_E", "REASON_E", "REFER_TO_E", Loading Loading @@ -2837,8 +2829,14 @@ void ContentType::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) static Regex reg_ctype ("^" SIPREG_TOKEN "/" SIPREG_TOKEN "(" SIPREG_SEMI SIPREG_M_PARAMETER ")*"); if (id == id_mediaType) { std::ofstream logfile("C:\\Temp\\LibSip.log", ios::app); logfile << "ContentType::PreDecodeField: id:" << id << std::endl; logfile << "ContentType::PreDecodeField: matching at:" << buffer.GetPosition() << std::endl; reg_ctype.AssertMatch (buffer, this); SetHypFieldLength (id, reg_ctype.GetMatchedLength()); logfile << "ContentType::PreDecodeField: matched:" << reg_ctype.GetMatchedString() << std::endl; logfile.close(); } } Loading Loading @@ -3757,6 +3755,27 @@ void ReferTo::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) } } void ReferSub::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError) { Charstring csSemi; csSemi.SetValue(";"); if(field_id == id_referSubParams && IsPresent(id_referSubParams)) { csSemi.Encode(buffer); } } void ReferSub::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_separator ("^" SIPREG_SEMI); switch (id) { case id_referSubParams: SetHypFieldIsPresent (id, reg_separator.Match (buffer) ? 1 : 0); break; } } void AcRcValue_List::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError) { Charstring csComma; Loading Loading @@ -3885,7 +3904,7 @@ void MinSE::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) } } void IntegerList::PreEncode (Buffer& buffer) throw (EncodeError) void StringList::PreEncode (Buffer& buffer) throw (EncodeError) { Charstring csIndexEqual; csIndexEqual.SetValue("index="); Loading @@ -3893,7 +3912,7 @@ void IntegerList::PreEncode (Buffer& buffer) throw (EncodeError) csIndexEqual.Encode(buffer); } void IntegerList::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError) void StringList::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError) { Charstring csDot; csDot.SetValue("."); Loading @@ -3901,16 +3920,18 @@ void IntegerList::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeErr if(field_id != 0) { csDot.Encode(buffer); } GetField(field_id).SetFormat(Integer::AsciiDecimal); } void IntegerList::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) void StringList::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_num ("^[0-9]+"); SetSize (GetSize() + 1); GetField(id).SetFormat(Integer::AsciiDecimal); reg_num.AssertMatch(buffer, this); SetHypFieldLength(reg_num.GetMatchedLength()); } void IntegerList::PostDecodeField (int id, Buffer& buffer) throw (DecodeError) void StringList::PostDecodeField (int id, Buffer& buffer) throw (DecodeError) { Regex reg_dot ("^[\\x2E]"); Loading