Loading codec/c++/sip_codets.cpp +36 −0 Original line number Diff line number Diff line Loading @@ -757,6 +757,9 @@ private: SIP_HEADER_ADD (P-Preferred-Identity, , pPreferredID, P_PREFERRED_ID_E); SIP_HEADER_ADD (Reason, , reason, REASON_E); SIP_HEADER_ADD (Path, , path, PATH_E); SIP_HEADER_ADD (Security-Client, , securityClient, SECURITY_CLIENT_E); SIP_HEADER_ADD (Security-Server, , securityServer, SECURITY_SERVER_E); SIP_HEADER_ADD (Security-Verify, , securityVerify, SECURITY_VERIFY_E); { mEntries.push_back(Entry("", "", MessageHeader::id_undefinedHeader_List, "")); Entry& e = *mEntries.rbegin(); Loading Loading @@ -828,6 +831,9 @@ void MessageHeader::PreDecodeField (Buffer& buffer) throw (DecodeError) case id_pPreferredID: case id_reason: case id_path: case id_securityClient: case id_securityServer: case id_securityVerify: case id_undefinedHeader_List: // these fields can appear multiple times break; Loading Loading @@ -2223,4 +2229,34 @@ void PathValues::PostDecodeField (int id, Buffer& buffer) throw (DecodeError) SetHypSize (-2); } void SecurityMechanism::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_token ("^" SIPREG_TOKEN); static Regex reg_separator ("^" SIPREG_SEMI); switch (id) { case id_mechName: reg_token.AssertMatch (buffer, this); SetHypFieldLength (id, reg_token.GetMatchedLength()); break; case id_mechParams: SetHypFieldIsPresent (id, reg_separator.Match (buffer) ? 1 : 0); break; } } void SecurityMechanism_List::PreDecode (Buffer& buffer) throw (DecodeError) { SetHypSize (GetSize() + 1); SetHypAppend (1); } void SecurityMechanism_List::PostDecodeField (int id, Buffer& buffer) throw (DecodeError) { if (detect_comma (buffer)) SetHypSize (GetSize() + 1); else SetHypSize (-2); } }} // namespaces Loading
codec/c++/sip_codets.cpp +36 −0 Original line number Diff line number Diff line Loading @@ -757,6 +757,9 @@ private: SIP_HEADER_ADD (P-Preferred-Identity, , pPreferredID, P_PREFERRED_ID_E); SIP_HEADER_ADD (Reason, , reason, REASON_E); SIP_HEADER_ADD (Path, , path, PATH_E); SIP_HEADER_ADD (Security-Client, , securityClient, SECURITY_CLIENT_E); SIP_HEADER_ADD (Security-Server, , securityServer, SECURITY_SERVER_E); SIP_HEADER_ADD (Security-Verify, , securityVerify, SECURITY_VERIFY_E); { mEntries.push_back(Entry("", "", MessageHeader::id_undefinedHeader_List, "")); Entry& e = *mEntries.rbegin(); Loading Loading @@ -828,6 +831,9 @@ void MessageHeader::PreDecodeField (Buffer& buffer) throw (DecodeError) case id_pPreferredID: case id_reason: case id_path: case id_securityClient: case id_securityServer: case id_securityVerify: case id_undefinedHeader_List: // these fields can appear multiple times break; Loading Loading @@ -2223,4 +2229,34 @@ void PathValues::PostDecodeField (int id, Buffer& buffer) throw (DecodeError) SetHypSize (-2); } void SecurityMechanism::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_token ("^" SIPREG_TOKEN); static Regex reg_separator ("^" SIPREG_SEMI); switch (id) { case id_mechName: reg_token.AssertMatch (buffer, this); SetHypFieldLength (id, reg_token.GetMatchedLength()); break; case id_mechParams: SetHypFieldIsPresent (id, reg_separator.Match (buffer) ? 1 : 0); break; } } void SecurityMechanism_List::PreDecode (Buffer& buffer) throw (DecodeError) { SetHypSize (GetSize() + 1); SetHypAppend (1); } void SecurityMechanism_List::PostDecodeField (int id, Buffer& buffer) throw (DecodeError) { if (detect_comma (buffer)) SetHypSize (GetSize() + 1); else SetHypSize (-2); } }} // namespaces