diff -r 696f5dd11939 -r 490439ac0bd4 syncmlfw/common/syncagent/src/nsmlstatuscontainer.cpp --- a/syncmlfw/common/syncagent/src/nsmlstatuscontainer.cpp Wed Jun 09 10:37:30 2010 +0300 +++ b/syncmlfw/common/syncagent/src/nsmlstatuscontainer.cpp Mon Jun 21 16:37:58 2010 +0300 @@ -16,7 +16,9 @@ */ - +#include +#include +#include //#include "nsmlcliagdefines.h" #include "NSmlStatusContainer.h" #include "nsmlcliagconstants.h" @@ -202,9 +204,59 @@ { (*iStatusArray)[aEntryID-1].statusIsFixed = ETrue; } + // TargertUri Fix + + TPtrC8 cmd( (TUint8*) (*iStatusArray)[aEntryID-1].status->cmd->content, (*iStatusArray)[aEntryID-1].status->cmd->length ); + if ( cmd == KNSmlAgentExec ) + { + CRepository* cenrep = NULL; + TInt err(KErrNone); + TRAP(err, cenrep = CRepository::NewL( KCRUidDeviceManagementInternalKeys )); + if(err == KErrNone) + { + TBuf8<256> targetPath; + TInt result = cenrep->Get( KNSmlDMSCOMOTargetRef, targetPath ); + if((targetPath.Length()) && (result == KErrNone)) + { + TPtrC8 sourcePath( (TUint8*) (*iStatusArray)[aEntryID-1].status->targetRefList->targetRef->content, (*iStatusArray)[aEntryID-1].status->targetRefList->targetRef->length ); + + SmlSource_t* source = new( ELeave ) SmlSource_t; + source->locURI = new( ELeave ) SmlPcdata_t; + source->locURI->SetDataL( sourcePath ); + source->locURI->contentType = SML_PCDATA_OPAQUE; + source->locURI->extension = SML_EXT_UNDEFINED; + source->locName = NULL; + + SmlTarget_t* target = new( ELeave ) SmlTarget_t; + target->locURI = new( ELeave ) SmlPcdata_t; + target->locURI->SetDataL( targetPath ); + target->locURI->contentType = SML_PCDATA_OPAQUE; + target->locURI->extension = SML_EXT_UNDEFINED; + target->locName = NULL; + AddSourceRefL( aEntryID, source ); + + SmlTargetRefList_t** targetRefList; + targetRefList = &(*iStatusArray)[aEntryID-1].status->targetRefList; + while( *targetRefList ) + { + if ((*targetRefList)->next == NULL ) + break; + targetRefList = &(*targetRefList)->next; + } + *targetRefList = new( ELeave ) SmlTargetRefList_t; + CreateTargetRefL( target, (*targetRefList)->targetRef ); + + _LIT8(KNullString, ""); + result = cenrep->Set( KNSmlDMSCOMOTargetRef, KNullString ); + } + delete cenrep; + cenrep = NULL; } + } + CleanupStack::PopAndDestroy(); //statusCode } + } // --------------------------------------------------------- // CNSmlStatusContainer::SetChalL() // Creates Chal element