Commit c9d26dce authored by baire's avatar baire
Browse files

support OptionTag_List

parent c2843736
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -645,6 +645,7 @@ private:
		SIP_HEADER_ADD (Accept-Language,	,	acceptLanguage,	ACCEPT_LANGUAGE_E);
		SIP_HEADER_ADD (Max-Forwards,	,	maxForwards,	MAX_FORWARDS_E);
		SIP_HEADER_ADD (Alert-Info,		,	alertInfo,	ALERT_INFO_E);
		SIP_HEADER_ADD (Require,	,	require,	REQUIRE_E);
		{
			mEntries.push_back(Entry("", "", MessageHeader::id_undefinedHeader_List, ""));
			Entry& e = *mEntries.rbegin();
@@ -1238,5 +1239,20 @@ void Payload::PostDecode(Buffer& buffer) throw (DecodeError)
	Get_payloadlength().SetValue(Get_payloadvalue().GetLength() / 8);
}

void OptionTag_List::PreDecodeField(int id, Buffer& buffer) throw (DecodeError)
{
	static Regex reg_first ("^" SIPREG_TOKEN);
	static Regex reg_next ("^" SIPREG_COMMA "(" SIPREG_TOKEN ")");

	if (id == 0) {
		reg_first.AssertMatch(buffer, this);
		SetHypFieldLength(reg_first.GetMatchedLength());
	} else {
		reg_next.AssertMatch(buffer, this);
		reg_next.MoveAt(buffer, 1);
		SetHypFieldLength(reg_next.GetMatchedLength(1));
	}
}


}} // namespaces