Commit 568b003d authored by berge's avatar berge
Browse files

Fixed "comment" and "quoted-string" encoding issues

parent 70fddf62
Loading
Loading
Loading
Loading
+37 −2
Original line number Diff line number Diff line
@@ -2218,6 +2218,26 @@ void Priority::PreDecodeField (int id, Buffer& buffer) throw (DecodeError){
	}
}

void RetryAfter::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError)
{
	Charstring csLeftPar;
	csLeftPar.SetValue("(");

	if(field_id == id_comment && IsPresent(id_comment)) {
		csLeftPar.Encode(buffer);
	}
}

void RetryAfter::PostEncodeField (int field_id, Buffer& buffer) throw (EncodeError)
{
	Charstring csRightPar;
	csRightPar.SetValue(")");

	if(field_id == id_comment && IsPresent(id_comment)) {
		csRightPar.Encode(buffer);
	}
}

void RetryAfter::PreDecodeField (int id, Buffer& buffer) throw (DecodeError)
{
	static Regex reg_delta_sec ("^[0-9]+");
@@ -2853,19 +2873,34 @@ void WarningValue_List::PostDecodeField (int id, Buffer& buffer) throw (DecodeEr

void WarningValue::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError)
{
	Charstring csWS;
	Charstring csWS, csDoubleQuote;
	csWS.SetValue(" ");
	csDoubleQuote.SetValue("\"");

	switch(field_id) {
	case id_warnCode:
		Get_warnCode().SetFormat(Integer::AsciiDecimal);
		break;
	default:
	case id_WarnText:
		csWS.Encode(buffer);
		csDoubleQuote.Encode(buffer);
		break;
	case id_warnAgent:
		csWS.Encode(buffer);
		break;
	}
}

void WarningValue::PostEncodeField (int field_id, Buffer& buffer) throw (EncodeError)
{
	Charstring csDoubleQuote;
	csDoubleQuote.SetValue("\"");

	if(field_id == id_WarnText) {
		csDoubleQuote.Encode(buffer);
	}
}

void WarningValue::PreDecode (Buffer& buffer) throw (DecodeError)
{
	Get_warnCode().SetFormat(Integer::AsciiDecimal);