realtimenetprots/sipfw/SIP/Codec/src/CSIPAcceptEncodingHeader.cpp
changeset 33 b8a7e07b2677
parent 0 307788aac0a8
child 37 0295359a7673
equal deleted inserted replaced
30:d7640adb246b 33:b8a7e07b2677
    26 #include "sipcodecerr.h"
    26 #include "sipcodecerr.h"
    27 #include "sipstrings.h"
    27 #include "sipstrings.h"
    28 #include "sipstrconsts.h"
    28 #include "sipstrconsts.h"
    29 #include "sipcodecutils.h"
    29 #include "sipcodecutils.h"
    30 #include "_sipcodecdefs.h"
    30 #include "_sipcodecdefs.h"
       
    31 #include <featdiscovery.h>
    31 
    32 
    32 
    33 
    33 // ----------------------------------------------------------------------------
    34 // ----------------------------------------------------------------------------
    34 // CSIPAcceptEncodingHeader::DecodeL
    35 // CSIPAcceptEncodingHeader::DecodeL
    35 // ----------------------------------------------------------------------------
    36 // ----------------------------------------------------------------------------
   159 //
   160 //
   160 EXPORT_C void CSIPAcceptEncodingHeader::SetCodingsL(const TDesC8& aCodings)
   161 EXPORT_C void CSIPAcceptEncodingHeader::SetCodingsL(const TDesC8& aCodings)
   161 	{
   162 	{
   162 	HBufC8* tmp = aCodings.AllocLC();
   163 	HBufC8* tmp = aCodings.AllocLC();
   163 	tmp->Des().Trim();
   164 	tmp->Des().Trim();
   164 	if (tmp->Length() > 0 && !SIPSyntaxCheck::Token(*tmp))
   165 	//Allowing '/' token for interoperability issues
       
   166 	RArray<TSIPChar> array;
       
   167 	if(CFeatureDiscovery::IsFeatureSupportedL(TUid::Uid(KFeatureIdFfSipApnSwitching)))
       
   168 	    {
       
   169         array.Append('/');
       
   170 	    }
       
   171 	
       
   172 	if (tmp->Length() > 0 && !SIPSyntaxCheck::Token(*tmp,&array))
   165         {
   173         {
       
   174         array.Close();
   166         User::Leave(KErrSipCodecAcceptEncodingHeader);
   175         User::Leave(KErrSipCodecAcceptEncodingHeader);
   167 	    }
   176 	    }
       
   177 	array.Close();
   168 	CleanupStack::Pop(tmp);
   178 	CleanupStack::Pop(tmp);
   169 	delete iCodings;
   179 	delete iCodings;
   170 	iCodings = tmp;
   180 	iCodings = tmp;
   171 	}
   181 	}
   172 
   182