Loading codec/c++/sip_codets.cpp +44 −0 Original line number Diff line number Diff line Loading @@ -772,6 +772,8 @@ private: SIP_HEADER_ADD (P-Charging-Vector, , pChargingVector, P_CHARGING_VECTOR_E); SIP_HEADER_ADD (Refer-To, r, referTo, REFER_TO_E); SIP_HEADER_ADD (Service-Route, , serviceRoute, SERVICE_ROUTE_E); SIP_HEADER_ADD (Accept-Contact, a, acceptContact, ACCEPT_CONTACT_E); SIP_HEADER_ADD (Referred-By, b, referredBy, REFERRED_BY_E); { mEntries.push_back(Entry("", "", MessageHeader::id_undefinedHeader_List, "")); Entry& e = *mEntries.rbegin(); Loading Loading @@ -849,6 +851,7 @@ void MessageHeader::PreDecodeField (Buffer& buffer) throw (DecodeError) case id_pAssociatedURI: case id_pCalledPartyID: case id_pVisitedNetworkID: case id_acceptContact: case id_undefinedHeader_List: // these fields can appear multiple times break; Loading Loading @@ -2376,4 +2379,45 @@ void ReferTo::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) } } void AcRcValue_List::PreDecode (Buffer& buffer) throw (DecodeError) { SetHypSize (GetSize() + 1); SetHypAppend (1); } void AcRcValue_List::PostDecodeField (int id, Buffer& buffer) throw (DecodeError) { if (detect_comma (buffer)) SetHypSize (GetSize() + 1); else SetHypSize (-2); } void AcRcValue::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_wildcard ("^[*]"); static Regex reg_separator ("^" SIPREG_SEMI); switch (id) { case id_wildcard: reg_wildcard.AssertMatch (buffer, this); SetHypFieldLength (id, reg_wildcard.GetMatchedLength()); break; case id_acRcParams: SetHypFieldIsPresent (id, reg_separator.Match (buffer) ? 1 : 0); break; } } void ReferredBy::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_separator ("^" SIPREG_SEMI); switch (id) { case id_referredbyIdParams: SetHypFieldIsPresent (id, reg_separator.Match (buffer) ? 1 : 0); break; } } }} // namespaces Loading
codec/c++/sip_codets.cpp +44 −0 Original line number Diff line number Diff line Loading @@ -772,6 +772,8 @@ private: SIP_HEADER_ADD (P-Charging-Vector, , pChargingVector, P_CHARGING_VECTOR_E); SIP_HEADER_ADD (Refer-To, r, referTo, REFER_TO_E); SIP_HEADER_ADD (Service-Route, , serviceRoute, SERVICE_ROUTE_E); SIP_HEADER_ADD (Accept-Contact, a, acceptContact, ACCEPT_CONTACT_E); SIP_HEADER_ADD (Referred-By, b, referredBy, REFERRED_BY_E); { mEntries.push_back(Entry("", "", MessageHeader::id_undefinedHeader_List, "")); Entry& e = *mEntries.rbegin(); Loading Loading @@ -849,6 +851,7 @@ void MessageHeader::PreDecodeField (Buffer& buffer) throw (DecodeError) case id_pAssociatedURI: case id_pCalledPartyID: case id_pVisitedNetworkID: case id_acceptContact: case id_undefinedHeader_List: // these fields can appear multiple times break; Loading Loading @@ -2376,4 +2379,45 @@ void ReferTo::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) } } void AcRcValue_List::PreDecode (Buffer& buffer) throw (DecodeError) { SetHypSize (GetSize() + 1); SetHypAppend (1); } void AcRcValue_List::PostDecodeField (int id, Buffer& buffer) throw (DecodeError) { if (detect_comma (buffer)) SetHypSize (GetSize() + 1); else SetHypSize (-2); } void AcRcValue::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_wildcard ("^[*]"); static Regex reg_separator ("^" SIPREG_SEMI); switch (id) { case id_wildcard: reg_wildcard.AssertMatch (buffer, this); SetHypFieldLength (id, reg_wildcard.GetMatchedLength()); break; case id_acRcParams: SetHypFieldIsPresent (id, reg_separator.Match (buffer) ? 1 : 0); break; } } void ReferredBy::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_separator ("^" SIPREG_SEMI); switch (id) { case id_referredbyIdParams: SetHypFieldIsPresent (id, reg_separator.Match (buffer) ? 1 : 0); break; } } }} // namespaces