Loading codec/c++/sip_codets.cpp +51 −0 Original line number Diff line number Diff line Loading @@ -776,6 +776,7 @@ private: SIP_HEADER_ADD (Referred-By, b, referredBy, REFERRED_BY_E); SIP_HEADER_ADD (Session-Expires, , sessionExpires, SESSION_EXPIRES_E); SIP_HEADER_ADD (Min-SE, , minSE, MIN_SE_E); SIP_HEADER_ADD (History-Info, , historyInfo, HISTORY_INFO_E); { mEntries.push_back(Entry("", "", MessageHeader::id_undefinedHeader_List, "")); Entry& e = *mEntries.rbegin(); Loading Loading @@ -854,6 +855,7 @@ void MessageHeader::PreDecodeField (Buffer& buffer) throw (DecodeError) case id_pCalledPartyID: case id_pVisitedNetworkID: case id_acceptContact: case id_historyInfo: case id_undefinedHeader_List: // these fields can appear multiple times break; Loading Loading @@ -2453,4 +2455,53 @@ void MinSE::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) } } void IntegerList::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { SetSize (GetSize() + 1); GetField(id).SetFormat(Integer::AsciiDecimal); } void IntegerList::PostDecodeField (int id, Buffer& buffer) throw (DecodeError) { Regex reg_dot ("^[\\x2E]"); if (detect_separator(reg_dot, buffer)) SetHypSize (GetSize() + 1); else SetHypSize (-2); } void HistoryInfoEntry::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_index ("^" SIPREG_SEMI "[Ii][Nn][Dd][Ee][Xx][=]"); static Regex reg_separator ("^" SIPREG_SEMI); switch (id) { case id_hiIndex: if (reg_index.Match (buffer)) { reg_index.MovePast (buffer); SetHypFieldIsPresent (id, 1); } else SetHypFieldIsPresent (id, 0); break; case id_hiExtention: SetHypFieldIsPresent (id, reg_separator.Match (buffer) ? 1 : 0); break; } } void HistoryInfo_List::PreDecode (Buffer& buffer) throw (DecodeError) { SetHypSize (GetSize() + 1); SetHypAppend (1); } void HistoryInfo_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 +51 −0 Original line number Diff line number Diff line Loading @@ -776,6 +776,7 @@ private: SIP_HEADER_ADD (Referred-By, b, referredBy, REFERRED_BY_E); SIP_HEADER_ADD (Session-Expires, , sessionExpires, SESSION_EXPIRES_E); SIP_HEADER_ADD (Min-SE, , minSE, MIN_SE_E); SIP_HEADER_ADD (History-Info, , historyInfo, HISTORY_INFO_E); { mEntries.push_back(Entry("", "", MessageHeader::id_undefinedHeader_List, "")); Entry& e = *mEntries.rbegin(); Loading Loading @@ -854,6 +855,7 @@ void MessageHeader::PreDecodeField (Buffer& buffer) throw (DecodeError) case id_pCalledPartyID: case id_pVisitedNetworkID: case id_acceptContact: case id_historyInfo: case id_undefinedHeader_List: // these fields can appear multiple times break; Loading Loading @@ -2453,4 +2455,53 @@ void MinSE::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) } } void IntegerList::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { SetSize (GetSize() + 1); GetField(id).SetFormat(Integer::AsciiDecimal); } void IntegerList::PostDecodeField (int id, Buffer& buffer) throw (DecodeError) { Regex reg_dot ("^[\\x2E]"); if (detect_separator(reg_dot, buffer)) SetHypSize (GetSize() + 1); else SetHypSize (-2); } void HistoryInfoEntry::PreDecodeField (int id, Buffer& buffer) throw (DecodeError) { static Regex reg_index ("^" SIPREG_SEMI "[Ii][Nn][Dd][Ee][Xx][=]"); static Regex reg_separator ("^" SIPREG_SEMI); switch (id) { case id_hiIndex: if (reg_index.Match (buffer)) { reg_index.MovePast (buffer); SetHypFieldIsPresent (id, 1); } else SetHypFieldIsPresent (id, 0); break; case id_hiExtention: SetHypFieldIsPresent (id, reg_separator.Match (buffer) ? 1 : 0); break; } } void HistoryInfo_List::PreDecode (Buffer& buffer) throw (DecodeError) { SetHypSize (GetSize() + 1); SetHypAppend (1); } void HistoryInfo_List::PostDecodeField (int id, Buffer& buffer) throw (DecodeError) { if (detect_comma (buffer)) SetHypSize (GetSize() + 1); else SetHypSize (-2); } }} // namespaces