Commit af80525c authored by nikolajev's avatar nikolajev
Browse files

MSRP codec logging inside DEBUG_LOG switches

parent da685728
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -18,13 +18,27 @@ namespace t3devlib { namespace gen {
#define SIPREG_SLASH		SIPREG_SWS "[/]" SIPREG_SWS
#define SIPREG_COLON		SIPREG_SWS "[:]" SIPREG_SWS

#define SIPCHARS_ALFA		"A-Za-z"
#define SIPCHARS_ALFANUM	"0-9" SIPCHARS_ALFA
#define SIPCHARS_HEXA	"0-9A-Fa-f"

// host name
#define SIPREG_TOPLABEL	"[" SIPCHARS_ALFA "]([" SIPCHARS_ALFANUM "\\-]*[" SIPCHARS_ALFANUM "])?"
#define SIPREG_DOMAINLABEL	"[" SIPCHARS_ALFANUM "]([" SIPCHARS_ALFANUM "\\-]*[" SIPCHARS_ALFANUM "])?"
#define SIPREG_HOSTNAME	"(" SIPREG_DOMAINLABEL "\\.)*" SIPREG_TOPLABEL "\\.?"

//quoted-string
// without leading and trailing whitespace
#define SIPCHARS_UTF8_NONASCII	"\x80-\xFD"
#define SIPREG_QUOTED_PAIR	"[\\x5C][\\x00-\\x09\\x0B\\x0C\\x0E-\\x7F]"
#define SIPREG_QUOTED_STRING	"[\"]((" SIPREG_LWS ")|[]!#-[^-~" SIPCHARS_UTF8_NONASCII"]|(" SIPREG_QUOTED_PAIR "))*[\"]"

// IPv6
#define SIPREG_HEX4		"[" SIPCHARS_HEXA "]{1,4}"
#define SIPREG_HEXSEQ		SIPREG_HEX4 "([:]" SIPREG_HEX4 ")*"
#define SIPREG_HEXPART	"(((" SIPREG_HEXSEQ ")?[:]{2}(" SIPREG_HEXSEQ ")?)|(" SIPREG_HEXSEQ  "))"
#define SIPREG_IP6		"[[]" SIPREG_HEXPART "([:]" SIPREG_IP4 ")?[]]"
#define SIPREG_IP6_INTERNAL SIPREG_HEXPART "([:]" SIPREG_IP4 ")?"
#define SIPREG_IP6		"[[]" SIPREG_IP6_INTERNAL "[]]"

//IPv4
#define SIPREG_IP4	"([0-9]{1,3}\\.){3}[0-9]{1,3}"
+963 −117

File changed.

Preview size limit exceeded, changes collapsed.

+5 −1
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@ T3DEVLIB_BASIC_DEFINITION (LibMsrp_TypesAndValues, Token, Charstring);
T3DEVLIB_ASCII_INTEGER_DEFINITION (LibMsrp_TypesAndValues, Namespace, Unsigned);
//type integer StatusCode;
T3DEVLIB_ASCII_INTEGER_DEFINITION (LibMsrp_TypesAndValues, StatusCode, Unsigned);
//type charstring Qop_Value;
T3DEVLIB_BASIC_DEFINITION (LibMsrp_TypesAndValues, Qop_Value, Charstring);
//type charstring SessionID;
T3DEVLIB_BASIC_DEFINITION (LibMsrp_TypesAndValues, SessionID, Charstring);
//type octetstring Data;
@@ -88,7 +90,9 @@ public:


#define DEFINITIONS_MimeExtensionField()	std::string m_shname;

#define DEFINITIONS_Digest()  bool b_needComma;
#define DEFINITIONS_DigestResponse()  bool b_needComma;
#define DEFINITIONS_AInfo() bool bIsFirstField;
}} //namespaces

#endif
+9 −0
Original line number Diff line number Diff line
@@ -579,6 +579,7 @@ private:
		SDP_ATTRIBUTE_ADD (fmtp);
		SDP_ATTRIBUTE_ADD (rtpmap);
		SDP_ATTRIBUTE_ADD (rtcp);
		SDP_ATTRIBUTE_ADD (msrp);

		// RFC 3312 attributes
		SDP_ATTRIBUTE_ADD (curr);
@@ -1428,6 +1429,14 @@ void SDP_attribute_rtcp::PreEncode (Buffer& buffer) throw (EncodeError)
	csAttrName.Encode(buffer);
}

void SDP_attribute_msrp::PreEncode (Buffer& buffer) throw (EncodeError)
{
	Charstring csAttrName;
	csAttrName.SetValue("msrp:");

	csAttrName.Encode(buffer);
}

void SDP_attribute_unknown::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError)
{
	Charstring csColon;
+43 −22
Original line number Diff line number Diff line
@@ -204,13 +204,9 @@ bool is_tel_scheme (const char * pszScheme) {
// Definition of character classes used to be used in the regular expressions
// (within [])
#define SIPCHARS_MARK		"\\-_.!~*'()"
#define SIPCHARS_ALFA		"A-Za-z"
#define SIPCHARS_ALFANUM	"0-9" SIPCHARS_ALFA
#define SIPCHARS_HEXA	"0-9A-Fa-f"
#define SIPCHARS_UNRESERVED	SIPCHARS_ALFANUM SIPCHARS_MARK
#define SIPCHARS_RESERVED	";/?:@&=+$,"
#define SIPCHARS_USER_UNRESERVED "&=+$,;?/"
#define SIPCHARS_UTF8_NONASCII	"\x80-\xFD"
#define SIPCHARS_TEXT_UTF8CHAR	"\x21-\xFD"


@@ -235,27 +231,20 @@ bool is_tel_scheme (const char * pszScheme) {
// header name
#define SIPREG_HNAME "(?:[][/?:+$" SIPCHARS_UNRESERVED "]|" SIPREG_ESCAPED ")+"

// host name
#define SIPREG_TOPLABEL	"[" SIPCHARS_ALFA "]([" SIPCHARS_ALFANUM "\\-]*[" SIPCHARS_ALFANUM "])?"
#define SIPREG_DOMAINLABEL	"[" SIPCHARS_ALFANUM "]([" SIPCHARS_ALFANUM "\\-]*[" SIPCHARS_ALFANUM "])?"
#define SIPREG_HOSTNAME	"(" SIPREG_DOMAINLABEL "\\.)*" SIPREG_TOPLABEL "\\.?"


// without leading and trailing whitespace
#define SIPREG_QUOTED_PAIR	"[\\x5C][\\x00-\\x09\\x0B\\x0C\\x0E-\\x7F]"
#define SIPREG_QUOTED_STRING	"[\"]((" SIPREG_LWS ")|[]!#-[^-~" SIPCHARS_UTF8_NONASCII"]|(" SIPREG_QUOTED_PAIR "))*[\"]"
#define SIPREG_DISPLAY_NAME "((" SIPREG_TOKEN "(" SIPREG_LWS SIPREG_TOKEN ")*)|(" SIPREG_QUOTED_STRING "))"

#define SIPREG_COMMENT	"[(]((" SIPREG_LWS ")|[\\x21-\\x5B]|[\\x5D-\\xFD]|(" SIPREG_QUOTED_PAIR "))*[)]"

// IPv4
#define SIPREG_IP4	"([0-9]{1,3}\\.){3}[0-9]{1,3}"
//#define SIPREG_IP4	"([0-9]{1,3}\\.){3}[0-9]{1,3}"

// IPv6
#define SIPREG_HEX4		"[" SIPCHARS_HEXA "]{1,4}"
#define SIPREG_HEXSEQ		SIPREG_HEX4 "([:]" SIPREG_HEX4 ")*"
#define SIPREG_HEXPART	"(((" SIPREG_HEXSEQ ")?[:]{2}(" SIPREG_HEXSEQ ")?)|(" SIPREG_HEXSEQ  "))"
#define SIPREG_IP6		"[[]" SIPREG_HEXPART "([:]" SIPREG_IP4 ")?[]]"
//#define SIPREG_HEX4		"[" SIPCHARS_HEXA "]{1,4}"
//#define SIPREG_HEXSEQ		SIPREG_HEX4 "([:]" SIPREG_HEX4 ")*"
//#define SIPREG_HEXPART	"(((" SIPREG_HEXSEQ ")?[:]{2}(" SIPREG_HEXSEQ ")?)|(" SIPREG_HEXSEQ  "))"
//#define SIPREG_IP6		"[[]" SIPREG_HEXPART "([:]" SIPREG_IP4 ")?[]]"

// host
#define SIPREG_HOST		"((" SIPREG_HOSTNAME ")|(" SIPREG_IP4 ")|(" SIPREG_IP6 "))"
@@ -1132,6 +1121,7 @@ private:
		SIP_HEADER_ADD (P-Charging-Function-Addresses,	,	pChargingFunctionAddresses,		P_CHARGING_FUNCTION_ADDRESSES_E);
		SIP_HEADER_ADD (P-Charging-Vector,		,	pChargingVector,	P_CHARGING_VECTOR_E);
		SIP_HEADER_ADD (Refer-To,	r,	referTo,	REFER_TO_E);
		SIP_HEADER_ADD (Refer-Sub,	r,	referSub,	REFER_SUB_E);
		SIP_HEADER_ADD (Replaces,		,	replaces,	REPLACES_E);
		SIP_HEADER_ADD (Service-Route,			,	serviceRoute,		SERVICE_ROUTE_E);
		SIP_HEADER_ADD (Accept-Contact,			a,	acceptContact,		ACCEPT_CONTACT_E);
@@ -1218,6 +1208,7 @@ void MessageHeader::PreDecodeField (Buffer& buffer) throw (DecodeError)
	std::ofstream logfile("C:\\Temp\\LibSip.log", ios::app);
	logfile << "MessageHeader::PreDecodeField: " << id << std::endl;
	logfile << "MessageHeader::PreDecodeField:MatchedName: " << reg_header_name.GetMatchedString(1) << std::endl;
	logfile << "MessageHeader::PreDecodeField:hdrId: " << id << std::endl;
	logfile.close();


@@ -1335,6 +1326,7 @@ const char* FieldName::msFields[] = {
	"P_MEDIA_AUTHORIZATION_E",
	"PRIVACY_E",
	"P_ASSERTED_ID_E",
	"REFER_SUB_E",
	"P_PREFERRED_ID_E", 
	"REASON_E",
	"REFER_TO_E",
@@ -2837,8 +2829,14 @@ void ContentType::PreDecodeField (int id, Buffer& buffer) throw (DecodeError)
	static Regex reg_ctype ("^" SIPREG_TOKEN "/" SIPREG_TOKEN "(" SIPREG_SEMI SIPREG_M_PARAMETER ")*");
	if (id == id_mediaType)
	{
		std::ofstream logfile("C:\\Temp\\LibSip.log", ios::app);
		logfile << "ContentType::PreDecodeField: id:" << id << std::endl;
		logfile << "ContentType::PreDecodeField: matching at:" << buffer.GetPosition() << std::endl;
		
		reg_ctype.AssertMatch (buffer, this);
		SetHypFieldLength (id, reg_ctype.GetMatchedLength());
		logfile << "ContentType::PreDecodeField: matched:" << reg_ctype.GetMatchedString() << std::endl;
		logfile.close();
	}
	
}
@@ -3757,6 +3755,27 @@ void ReferTo::PreDecodeField (int id, Buffer& buffer) throw (DecodeError)
	}
}

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

	if(field_id == id_referSubParams && IsPresent(id_referSubParams)) {
		csSemi.Encode(buffer);
	}
}

void ReferSub::PreDecodeField (int id, Buffer& buffer) throw (DecodeError)
{
	static Regex reg_separator ("^" SIPREG_SEMI);

	switch (id) {
		case id_referSubParams:
			SetHypFieldIsPresent (id, reg_separator.Match (buffer) ? 1 : 0);
			break;
	}
}

void AcRcValue_List::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError)
{
	Charstring csComma;
@@ -3885,7 +3904,7 @@ void MinSE::PreDecodeField (int id, Buffer& buffer) throw (DecodeError)
	}
}

void IntegerList::PreEncode (Buffer& buffer) throw (EncodeError)
void StringList::PreEncode (Buffer& buffer) throw (EncodeError)
{
	Charstring csIndexEqual;
	csIndexEqual.SetValue("index=");
@@ -3893,7 +3912,7 @@ void IntegerList::PreEncode (Buffer& buffer) throw (EncodeError)
	csIndexEqual.Encode(buffer);
}

void IntegerList::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError)
void StringList::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeError)
{
	Charstring csDot;
	csDot.SetValue(".");
@@ -3901,16 +3920,18 @@ void IntegerList::PreEncodeField (int field_id, Buffer& buffer) throw (EncodeErr
	if(field_id != 0) {
		csDot.Encode(buffer);
	}
	GetField(field_id).SetFormat(Integer::AsciiDecimal);
}

void IntegerList::PreDecodeField (int id, Buffer& buffer) throw (DecodeError)
void StringList::PreDecodeField (int id, Buffer& buffer) throw (DecodeError)
{
	static Regex reg_num ("^[0-9]+");
	SetSize (GetSize() + 1);
	GetField(id).SetFormat(Integer::AsciiDecimal);

	reg_num.AssertMatch(buffer, this);
	SetHypFieldLength(reg_num.GetMatchedLength());
}

void IntegerList::PostDecodeField (int id, Buffer& buffer) throw (DecodeError)
void StringList::PostDecodeField (int id, Buffer& buffer) throw (DecodeError)
{
	Regex reg_dot ("^[\\x2E]");