voipplugins/sipmxresolver/src/sipmxresolver.cpp
branchRCL_3
changeset 10 7117cbf1600a
parent 0 a4daefaec16c
--- a/voipplugins/sipmxresolver/src/sipmxresolver.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/sipmxresolver/src/sipmxresolver.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -36,6 +36,8 @@
 #include <sdpcodecstringconstants.h>
 #include <sdpattributefield.h>
 #include <sipstrings.h>
+#include <sipallowheader.h>
+#include <sipsupportedheader.h>
 
 //For checking dynamic voip status and MuS availability
 #include <featmgr.h>
@@ -59,7 +61,9 @@
 _LIT8( KSendOnly, "sendonly" );            		// For attribute checks
 _LIT8( KApplicationAttr, "application" );   	// For attribute checks
 _LIT8( KXApplicationAttr, "X-application" );	// For attribute checks
-_LIT8( KNokiaRtvs, "com.nokia.rtvs" );       	// For attribute checks 
+_LIT8( KNokiaRtvs, "com.nokia.rtvs" );       	// For attribute checks
+_LIT8( KSIPMethodsInAllowHeader, "INVITE,ACK,CANCEL,OPTIONS,BYE,PRACK,SUBSCRIBE,REFER,NOTIFY,UPDATE");	// SIP Methods allowed by various plugins
+_LIT8( KSIPExtensionsSupported, "100rel,timer,sec-agree"); //Extensions supported by various plugins
 
 /**
  * Cleanup function for RPointerArray
@@ -469,8 +473,29 @@
 // ---------------------------------------------------------------------------
 // 
 void CSipMXResolver::AddClientSpecificHeadersForOptionsResponseL(
-    RPointerArray<CSIPHeaderBase>& /*aHeaders*/ )
+    RPointerArray<CSIPHeaderBase>& aHeaders )
     {
+    SIPMXRLOG( "[SIPMXRESOLVER] -> \
+    CSipMXResolver::AddClientSpecificHeadersForOptionsResponseL()" )
+	//Add Allow Header		
+	RPointerArray<CSIPAllowHeader> allowheaders = 
+	    CSIPAllowHeader::DecodeL(KSIPMethodsInAllowHeader);
+	TInt count = allowheaders.Count();
+	for(TInt i = 0; i<count; i++)
+		{
+		User::LeaveIfError(aHeaders.Append(allowheaders[i]));
+		}
+	allowheaders.Reset();
+
+	//Add Supported Header
+	RPointerArray<CSIPSupportedHeader> supportedheaders = 
+	    CSIPSupportedHeader::DecodeL(KSIPExtensionsSupported);
+	count = supportedheaders.Count();
+	for(TInt j = 0; j<count; j++)
+		{
+		User::LeaveIfError(aHeaders.Append(supportedheaders[j]));
+		}
+	supportedheaders.Reset();
     }