Commit bcab77d6 authored by urbant's avatar urbant
Browse files

decoding support for in-reply-to, mime-version, min-expires

parent 2c0c9d0b
Loading
Loading
Loading
Loading
+47 −9
Original line number Diff line number Diff line
@@ -705,6 +705,9 @@ private:
		SIP_HEADER_ADD (Date,		 ,	date,		DATE_E);
		SIP_HEADER_ADD (Error-Info,		,	errorInfo,	ERROR_INFO_E);
		SIP_HEADER_ADD (Expires,	,	expires,	EXPIRES_E);
		SIP_HEADER_ADD (In-Reply-To,	,	inReplyTo,	IN_REPLY_TO_E);
		SIP_HEADER_ADD (MIME-Version,	,	mimeVersion,	MIME_VERSION_E);
		SIP_HEADER_ADD (Min-Expires,	,	minExpires,	MIN_EXPIRES_E);
		{
			mEntries.push_back(Entry("", "", MessageHeader::id_undefinedHeader_List, ""));
			Entry& e = *mEntries.rbegin();
@@ -1189,6 +1192,14 @@ void LanguageTag_List::PreDecodeField (int id, Buffer& buffer) throw (DecodeErro
		SetHypSize(-2);
}

void Date::PreDecodeField (int id, Buffer& buffer) throw (DecodeError){
	static Regex reg_date ("^[^\\r\\n]+");
	if (id == id_sipDate){
		reg_date.AssertMatch(buffer, this);
		SetHypFieldLength(id, reg_date.GetMatchedLength());
	}
}

void ErrorInfo::PreDecodeField (int id, Buffer& buffer) throw (DecodeError){
	static Regex reg_error_info ("^[^;,\\r\\n]");
	if (id == id_errorInfo){
@@ -1236,7 +1247,41 @@ void ErrorInfoBody_List::PreDecodeField (int id, Buffer& buffer) throw (DecodeEr

void Expires::PreDecodeField (int id, Buffer& buffer) throw (DecodeError)
{
	static Regex reg_delta_sec ("^[0-9]");
	static Regex reg_delta_sec ("^[0-9]+");

	switch (id) {
	case id_deltaSec: 
		reg_delta_sec.AssertMatch (buffer, this);
		SetHypFieldLength (id, reg_delta_sec.GetMatchedLength());
		break;
	}
}

void CallidString_List::PreDecodeField (int id, Buffer& buffer) throw (DecodeError)
{
	int nRes = detect_comma(this, buffer);
	if (nRes >= 0)
		SetHypFieldLength(nRes);
	else
		SetHypSize(-2);
}

void MimeVersion::PreDecode (Buffer& buffer) throw (DecodeError)
{
	Get_majorNumber().SetFormat(Integer::AsciiDecimal);
	Get_minorNumber().SetFormat(Integer::AsciiDecimal);
}
void MimeVersion::PreDecodeField (int id, Buffer& buffer) throw (DecodeError)
{
	static Regex reg_separator ("^[.]+");
	if (id == id_minorNumber) {
		reg_separator.AssertMatch (buffer, this);
		buffer.SetPosition(buffer.GetPosition() + 8);
	}
}
void MinExpires::PreDecodeField (int id, Buffer& buffer) throw (DecodeError)
{
	static Regex reg_delta_sec ("^[0-9]+");

	switch (id) {
	case id_deltaSec: 
@@ -1246,6 +1291,7 @@ void Expires::PreDecodeField (int id, Buffer& buffer) throw (DecodeError)
	}
}


void NameAddr::PreDecodeField (int id, Buffer& buffer) throw (DecodeError)
{
	static Regex reg_display_name ("^" SIPREG_DISPLAY_NAME);
@@ -1271,14 +1317,6 @@ void NameAddr::PreDecodeField (int id, Buffer& buffer) throw (DecodeError)
	}
}

void Date::PreDecodeField (int id, Buffer& buffer) throw (DecodeError){
	static Regex reg_date ("^[^\\r\\n]+");
	if (id == id_sipDate){
		reg_date.AssertMatch(buffer, this);
		SetHypFieldLength(id, reg_date.GetMatchedLength());
	}
}

void NameAddr::PostDecodeField (int id, Buffer& buffer) throw (DecodeError)
{
	static Regex reg_raquot ("^>");