Revision: 201004 PDK_3.0.f
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 26 Jan 2010 13:09:14 +0200
changeset 4 928ed51ddc43
parent 3 b6139031a239
child 5 68ef71f0cd72
Revision: 201004 Kit: 201004
commsconfig/commsdatabaseshim/Documentation/BC Shim Design Document.doc
commsconfig/commsdatabaseshim/Documentation/CommDb_API.doc
commsconfig/commsdatabaseshim/Documentation/CommDb_Design_Delta.doc
commsconfig/commsdatabaseshim/Documentation/CommDb_Unit_Test_Specification.doc
commsfw_info/commsinfrastructuredocs/Comms Framework Migration Guide for NIFs and v1.5 PRTs.doc
commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_Architectural_Description.doc
commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_Architecture_FAQ.doc
commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_Functional_Specification.doc
commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_How_to_implement_a_layer.doc
commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_Release_Note.doc
commsfw_info/commsinfrastructuredocs/How to run test harnesses in Comms-Infras.doc
commsfw_info/commsinfrastructuredocs/Selection Fundamentals.doc
commsfwsupport/commselements/MsgParser/Documentation/Message Structure & Parser Design Document.doc
commsfwsupport/commselements/NetMeta/Documentation/NetMeta_Design_Document.doc
commsfwsupport/commselements/NetSubscribe/documentation/NetSubscribe Design.doc
commsfwsupport/commselements/StartServer/Documentation/Start Server Design Document.doc
commsfwsupport/commselements/StateMachine/Documentation/State Machine Design Document.doc
commsfwsupport/commselements/commsfw/documentation/CFTransport Design Document.doc
commsfwsupport/commselements/commsfw/documentation/Comms Framework API.doc
commsfwsupport/commselements/commsfw/documentation/Comms Framework Test Specification.doc
commsfwsupport/commselements/commsfw/te_commsfw_transport/documentation/Preq 399 Thread Transport Test Specification.doc
commsfwsupport/commselements/meshmachine/documentation/MeshMachineFundamentals.doc
commsfwsupport/commselements/nodemessages/documentation/SGL.GT0359.057.NodeMessages_Design.doc
commsfwsupport/commselements/rootserver/documentation/Root Server API Reference.doc
commsfwsupport/commselements/rootserver/documentation/Root Server Capabilities Test Spec.doc
commsfwsupport/commselements/rootserver/documentation/Root Server Design Document.doc
commsfwsupport/commselements/rootserver/documentation/RootServer Component Test Spec.doc
commsfwsupport/commselements/testing/asyncenv_devcycle_demo/documentation/Asynchronous Environment Development Demo.doc
commsfwtools/commstools/messageinterceptregister/documentation/HowToTestFallibleMessages.doc
commsfwtools/commstools/messageinterceptregister/documentation/MessageInterceptorDesign.doc
commsfwtools/commstools/svg/messagesequencetool.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/CED_Migration_Design.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/Ceddump migration Design.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/Comms Dat Ref Final Documentation.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/Comms Database Data Schema Description.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/CommsDat API and Migration Guide.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/CommsDatAPI.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/CommsData Format.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/Deprecate R97_R98 QoS Parameters & PSD agent_Migration_HowTo.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/HowTo_Access_Points.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/Howto_Configure_CSD_Connections.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/Howto_Configure_Network_Connections.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/Howto_Configure_PSD_Connections.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/Howto_Configure_VPN_Connections.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/Mapping in the Comms Database.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/OS Versioning for the Tools2 Port of Commsdat.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/Tools2 deliverables.doc
commsfwtools/preparedefaultcommsdatabase/Documentation/te_commsdat test spec.doc
commsfwtools/preparedefaultcommsdatabase/Tools/ced/Documentation/Commdb_Configuration_Editor.doc
commsfwtools/preparedefaultcommsdatabase/Tools/ced/Documentation/HiddenReadOnlyUpdates/ReadOnly_Hidden_Support_Architectural_Analysis.doc
commsfwtools/preparedefaultcommsdatabase/Tools/ced/Documentation/HiddenReadOnlyUpdates/ReadOnly_Hidden_Support_Design.doc
commsfwtools/preparedefaultcommsdatabase/Tools/ceddump/documents/Commdb_Configuration_Dumper.doc
commsfwutils/commsbufs/Documentation/CommsBufsDesign.doc
commsfwutils/commsbufs/version1/mbufmgr/Documentation/MBuf Manager Component Test Specification.doc
commsfwutils/commsbufs/version1/mbufmgr/Documentation/MBuf Manager Design.doc
commsprocess/commsrootserverconfig/Documentation/Comms Process Startup-Config Design Document.doc
commsprocess/commsrootserverconfig/Documentation/Configurator Capabilities Test Spec.doc
commsprocess/commsrootserverconfig/Documentation/Root Server API Reference.doc
commsprocess/commsrootserverconfig/Documentation/Root Server Capabilities Test Spec.doc
commsprocess/commsrootserverconfig/Documentation/Root Server Design Document.doc
commsprocess/commsrootserverconfig/Documentation/RootServer Component Test Spec.doc
commsprocess/commsrootserverconfig/Te_Configurator/Documentation/SGL.GT0280.202 PREQ890 Configurator Test Specification_v1.0.doc
datacommsserver/esockserver/CoreProviders/src/coretiernotificationactivity.cpp
datacommsserver/esockserver/CoreProviders/src/coretiernotificationstates.cpp
datacommsserver/esockserver/Documentation/BR2506migrationdocument.doc
datacommsserver/esockserver/Documentation/Connection Server API Functional Spec.doc
datacommsserver/esockserver/Documentation/Connection Server HowTo.doc
datacommsserver/esockserver/Documentation/Connection Stack_How_To.doc
datacommsserver/esockserver/Documentation/Control Plane Connection Stack(phase 1).doc
datacommsserver/esockserver/Documentation/Design for Flexible Comms Stack.doc
datacommsserver/esockserver/Documentation/ESOCK Component Test Specification.doc
datacommsserver/esockserver/Documentation/ESock_CESockIniData_Te_Ini_Test_Specification.doc
datacommsserver/esockserver/Documentation/ESock_Design.doc
datacommsserver/esockserver/Documentation/ESock_HowTo.doc
datacommsserver/esockserver/Documentation/Esock_CR1039_CommsData_ Plug-in_Design_Document.doc
datacommsserver/esockserver/Documentation/Esock_integration_test_specification.doc
datacommsserver/esockserver/Documentation/HOWTO install an esock protocol after market.doc
datacommsserver/esockserver/Documentation/NonSeamlessBearerMobility_ClientSideAPIs.doc
datacommsserver/esockserver/Documentation/NonSeamlessBearerMobility_ReferenceImplementation.doc
datacommsserver/esockserver/Documentation/NonSeamlessBearerMobility_ServerSideAPIs.doc
datacommsserver/esockserver/Documentation/RConnection API for Connection Management.doc
datacommsserver/esockserver/Documentation/RConnection deprecated methods HOWTO.doc
datacommsserver/esockserver/Documentation/RConnection_API.doc
datacommsserver/esockserver/Documentation/RConnection_Test_Specification.doc
datacommsserver/esockserver/Documentation/RInternalSocket_TE_EintSock_Test_Specification.doc
datacommsserver/esockserver/Documentation/RSubConnection_API.doc
datacommsserver/esockserver/Documentation/TS_Multihoming_Test_Specification.doc
datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitymcpractivities.h
datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitymcprstates.h
datacommsserver/esockserver/MobilityCoreProviders/src/mobilitymcpractivities.cpp
datacommsserver/esockserver/core_states/ss_corepractivities.cpp
datacommsserver/esockserver/core_states/ss_coreprstates.cpp
datacommsserver/esockserver/csock/CS_CLI.CPP
datacommsserver/esockserver/inc/ss_nodemessages_legacy_internal.h
datacommsserver/esockserver/ssock/ss_api_ext.cpp
datacommsserver/esockserver/ssock/ss_commsdataobject.cpp
datacommsserver/esockserver/ssock/ss_connLegacy.cpp
datacommsserver/esockserver/ssock/ss_connstates.cpp
datacommsserver/esockserver/ssock/ss_intsock.cpp
datacommsserver/esockserver/ssock/ss_nodemessages_legacy.cpp
datacommsserver/esockserver/ssock/ss_roles.cpp
datacommsserver/esockserver/test/TE_EsockTestSteps/Documentation/TE_EsockTestSteps_Test Specification.doc
datacommsserver/esockserver/test/TE_EsockTestSteps/group/te_EsockTestStepsSuite.mmp
datacommsserver/esockserver/test/TE_EsockTestSteps/group/te_EsockTestStepsSuite_captest.mmp
datacommsserver/esockserver/test/TE_EsockTestSteps/inc/ConnectionServer.TestSteps.h
datacommsserver/esockserver/test/TE_EsockTestSteps/src/ConnectionServer.TestSteps.cpp
datacommsserver/esockserver/test/TE_EsockTestSteps/src/Te_esockteststepsSuiteServer.cpp
datacommsserver/esockserver/test/TE_RConnection/configs/Mobility/BearerMobility_001.ced.cfg
datacommsserver/esockserver/test/TE_RConnection/documentation/GT0429 - PDP Contention Management Test Specification.doc
datacommsserver/esockserver/test/TE_RConnection/documentation/SGL.GT0253.202 Non-Seamless Bearer Mobility - Test Spec.doc
datacommsserver/esockserver/test/TE_RConnection/documentation/SGL.GT0253.220 Data Monitoring - Test Specification.doc
datacommsserver/esockserver/test/TE_RConnection/documentation/TE_RConnection_Test_Specification.doc
datacommsserver/esockserver/test/TE_RConnection/group/bld.inf
datacommsserver/esockserver/test/TE_RConnection/group/te_BearerMobilityTestSuite.mmp
datacommsserver/esockserver/test/TE_RConnection/scripts/Mobility/Mobility_761404.script
datacommsserver/esockserver/test/TE_RConnection/scripts/Mobility/Mobility_761405.script
datacommsserver/esockserver/test/TE_RConnection/scripts/te_RConnection_Mobility.script
datacommsserver/esockserver/test/TE_RConnection/src/te_BearerMobilityTestSuite.cpp
datacommsserver/esockserver/test/TE_RConnection/src/te_BearerMobilityTestSuite.h
datacommsserver/esockserver/test/TE_RConnectionServ/documentation/RConnectionServ API test specification.doc
datacommsserver/esockserver/test/TE_RConnectionSuite/config/def143083.xml
datacommsserver/esockserver/test/TE_RConnectionSuite/config/te_rconnectionallinterfacenot_NonConnection.script
datacommsserver/esockserver/test/TE_RConnectionSuite/group/TE_RConnectionSuite.iby
datacommsserver/esockserver/test/TE_RConnectionSuite/group/bld.inf
datacommsserver/esockserver/test/TE_RConnectionSuite/inc/TE_AllInterfaceNotification.h
datacommsserver/esockserver/test/TE_RConnectionSuite/src/TE_AllInterfaceNotification.cpp
datacommsserver/esockserver/test/TE_RConnectionSuite/src/TE_RConnectionSuite.cpp
datacommsserver/esockserver/test/TE_RSubconnection/documentation/TE_RSubConnection_Test_Specification.doc
datacommsserver/esockserver/test/TE_Socket/SocketTestSection31.cpp
datacommsserver/esockserver/test/TE_Socket/SocketTestSection31.h
datacommsserver/esockserver/test/TE_Socket/TestSuiteSocket.cpp
datacommsserver/esockserver/test/TE_Socket/group/TE_Socket.mmp
datacommsserver/esockserver/test/TE_Socket/scriptfiles/te_socket_tests.script
datacommsserver/esockserver/test/protocols/pdummy/PDUMMY.CPP
datacommsserver/networkcontroller/Documentation/Network_Controller_Design.doc
datacommsserver/networkcontroller/Documentation/Network_Controller_Unit_Test_Specification.doc
datacommsserver/networkcontroller/Documentation/SGL.GT0161.208 Mobile IP to Simple IP Fallback.doc
datacommsserver/networkcontroller/Documentation/SGL.GT0161.211 Mobile IP to Simple IP Fallback Mechanism Design.doc
datacommsserver/networkcontroller/Documentation/SGL.GT0161.305 Mobile IP to Simple IP Fallback Mechanism Test Specification.doc
datacommsserver/networkingdialogapi/Documentation/Dialog_API_Specification.doc
datacommsserver/networkingdialogapi/Documentation/Dialog_Design.doc
datacommsserver/networkingdialogapi/Documentation/Dialog_Test_Specification.doc
serialserver/c32serialserver/Test/TE_C32/documentation/C32_How_to_test.doc
serialserver/c32serialserver/Test/TE_C32/documentation/C32_Test_Specification.doc
serialserver/c32serialserver/Test/TE_C32/documentation/C32_Unit_Test_Specification.doc
serialserver/c32serialserver/Test/te_C32Performance/Documentation/C32 Performance Test Design.doc
serialserver/c32serialserver/documentation/C32API.doc
serialserver/c32serialserver/documentation/C32_Design_Document.doc
serialserver/c32serialserver/documentation/C32_Design_Document_v1.doc
serialserver/c32serialserver/documentation/C32_Heap_Check_Migration.doc
serialserver/c32serialserver/documentation/How_To_configure_C32.doc
serialserver/c32serialserverdocs/SerComms_Subsystem_Architectural_Description.doc
serialserver/c32serialserverdocs/SerComms_Subsystem_Functional_Specification.doc
serialserver/c32serialserverdocs/SerComms_Subsystem_Release_Note.doc
serialserver/packetloopbackcsy/Documentation/PacketLoopbackCsy_Design_Document.doc
serialserver/packetloopbackcsy/src/LoopbackConfig.cpp
serialserver/packetloopbackcsy/src/loopback.cpp
--- a/commsconfig/commsdatabaseshim/Documentation/BC Shim Design Document.doc	Fri Jan 22 10:58:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-ÐÏࡱ
\ No newline at end of file
--- a/commsconfig/commsdatabaseshim/Documentation/CommDb_API.doc	Fri Jan 22 10:58:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-ÐÏࡱ
\ No newline at end of file
--- a/commsconfig/commsdatabaseshim/Documentation/CommDb_Design_Delta.doc	Fri Jan 22 10:58:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-ÐÏࡱ
\ No newline at end of file
--- a/commsconfig/commsdatabaseshim/Documentation/CommDb_Unit_Test_Specification.doc	Fri Jan 22 10:58:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-ÐÏࡱ
\ No newline at end of file
Binary file commsfw_info/commsinfrastructuredocs/Comms Framework Migration Guide for NIFs and v1.5 PRTs.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_Architectural_Description.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_Architecture_FAQ.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_Functional_Specification.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_How_to_implement_a_layer.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_Release_Note.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/How to run test harnesses in Comms-Infras.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/Selection Fundamentals.doc has changed
Binary file commsfwsupport/commselements/MsgParser/Documentation/Message Structure & Parser Design Document.doc has changed
Binary file commsfwsupport/commselements/NetMeta/Documentation/NetMeta_Design_Document.doc has changed
Binary file commsfwsupport/commselements/NetSubscribe/documentation/NetSubscribe Design.doc has changed
Binary file commsfwsupport/commselements/StartServer/Documentation/Start Server Design Document.doc has changed
Binary file commsfwsupport/commselements/StateMachine/Documentation/State Machine Design Document.doc has changed
Binary file commsfwsupport/commselements/commsfw/documentation/CFTransport Design Document.doc has changed
Binary file commsfwsupport/commselements/commsfw/documentation/Comms Framework API.doc has changed
Binary file commsfwsupport/commselements/commsfw/documentation/Comms Framework Test Specification.doc has changed
Binary file commsfwsupport/commselements/commsfw/te_commsfw_transport/documentation/Preq 399 Thread Transport Test Specification.doc has changed
Binary file commsfwsupport/commselements/meshmachine/documentation/MeshMachineFundamentals.doc has changed
Binary file commsfwsupport/commselements/nodemessages/documentation/SGL.GT0359.057.NodeMessages_Design.doc has changed
Binary file commsfwsupport/commselements/rootserver/documentation/Root Server API Reference.doc has changed
Binary file commsfwsupport/commselements/rootserver/documentation/Root Server Capabilities Test Spec.doc has changed
Binary file commsfwsupport/commselements/rootserver/documentation/Root Server Design Document.doc has changed
Binary file commsfwsupport/commselements/rootserver/documentation/RootServer Component Test Spec.doc has changed
Binary file commsfwsupport/commselements/testing/asyncenv_devcycle_demo/documentation/Asynchronous Environment Development Demo.doc has changed
Binary file commsfwtools/commstools/messageinterceptregister/documentation/HowToTestFallibleMessages.doc has changed
Binary file commsfwtools/commstools/messageinterceptregister/documentation/MessageInterceptorDesign.doc has changed
Binary file commsfwtools/commstools/svg/messagesequencetool.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/CED_Migration_Design.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Ceddump migration Design.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Comms Dat Ref Final Documentation.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Comms Database Data Schema Description.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/CommsDat API and Migration Guide.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/CommsDatAPI.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/CommsData Format.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Deprecate R97_R98 QoS Parameters & PSD agent_Migration_HowTo.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/HowTo_Access_Points.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Howto_Configure_CSD_Connections.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Howto_Configure_Network_Connections.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Howto_Configure_PSD_Connections.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Howto_Configure_VPN_Connections.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Mapping in the Comms Database.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/OS Versioning for the Tools2 Port of Commsdat.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Tools2 deliverables.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/te_commsdat test spec.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Tools/ced/Documentation/Commdb_Configuration_Editor.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Tools/ced/Documentation/HiddenReadOnlyUpdates/ReadOnly_Hidden_Support_Architectural_Analysis.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Tools/ced/Documentation/HiddenReadOnlyUpdates/ReadOnly_Hidden_Support_Design.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Tools/ceddump/documents/Commdb_Configuration_Dumper.doc has changed
Binary file commsfwutils/commsbufs/Documentation/CommsBufsDesign.doc has changed
Binary file commsfwutils/commsbufs/version1/mbufmgr/Documentation/MBuf Manager Component Test Specification.doc has changed
Binary file commsfwutils/commsbufs/version1/mbufmgr/Documentation/MBuf Manager Design.doc has changed
Binary file commsprocess/commsrootserverconfig/Documentation/Comms Process Startup-Config Design Document.doc has changed
Binary file commsprocess/commsrootserverconfig/Documentation/Configurator Capabilities Test Spec.doc has changed
Binary file commsprocess/commsrootserverconfig/Documentation/Root Server API Reference.doc has changed
Binary file commsprocess/commsrootserverconfig/Documentation/Root Server Capabilities Test Spec.doc has changed
Binary file commsprocess/commsrootserverconfig/Documentation/Root Server Design Document.doc has changed
Binary file commsprocess/commsrootserverconfig/Documentation/RootServer Component Test Spec.doc has changed
Binary file commsprocess/commsrootserverconfig/Te_Configurator/Documentation/SGL.GT0280.202 PREQ890 Configurator Test Specification_v1.0.doc has changed
--- a/datacommsserver/esockserver/CoreProviders/src/coretiernotificationactivity.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/CoreProviders/src/coretiernotificationactivity.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -156,7 +156,6 @@
 
 /*virtual*/ void CTierNotificationActivity::StartL(RPointerArray<MDataCollector>& aCollectors)
 	{
-	CleanupResetAndDestroyPushL(aCollectors);
 	if(aCollectors.Count() == 0)
 		{
 		User::Leave(KErrArgument);
@@ -167,15 +166,17 @@
 	iCache = CTierNotificationCache::NewL();
 
 	// set up a session with each collector
-	for(TInt sessionId=0 ; sessionId<aCollectors.Count() ; ++sessionId)
+	for (TInt sessionId=0 ; sessionId<aCollectors.Count() ; ++sessionId)
 		{
 		CDataCollectorSession* newCollector = CDataCollectorSession::NewL(aCollectors[sessionId], *this, sessionId );
-		__ASSERT_DEBUG(newCollector, User::Panic(KSpecAssert_ESockCrPrvTNotAC, 2));
+		CleanupStack::PushL(newCollector);
 		iCollectorSessions.AppendL(newCollector);
-		aCollectors[sessionId] = 0; // now owned by *this so don't want it to be in the cleanup path twice!
+		CleanupStack::Pop(newCollector);
+		
+		// now owned by the CDataCollectorSession in iCollectorSessions so don't want it to be in the cleanup path twice!
+		aCollectors[sessionId] = 0;
 		}
 
-	CleanupStack::PopAndDestroy();
 
 	// Must run session creation and start loops separately in case the initial data fetch is synchronous.
 	// Reasoning:
--- a/datacommsserver/esockserver/CoreProviders/src/coretiernotificationstates.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/CoreProviders/src/coretiernotificationstates.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -175,8 +175,8 @@
 				message_cast<TCFDataCollector::TTierDataCollectors>(iContext.iMessage);
 
 	RPointerArray<MDataCollector>* collrs = static_cast< RPointerArray<MDataCollector>*> (inMsg.iPtr);
-	CleanupStack::PushL(collrs);
-	CleanupResetAndDestroyPushL(*collrs);
+	CleanupStack::PushL(collrs); // We take ownership of the collector array
+	CleanupResetAndDestroyPushL(*collrs);  // Note that RPointerArray<> doesn't destroy contained items at destruction so this cleanup item is needed
 
 	CTierNotificationActivity* act = static_cast<CTierNotificationActivity*>(iContext.iNodeActivity);
 	// my custom StartL (sets the activity going)
Binary file datacommsserver/esockserver/Documentation/BR2506migrationdocument.doc has changed
Binary file datacommsserver/esockserver/Documentation/Connection Server API Functional Spec.doc has changed
Binary file datacommsserver/esockserver/Documentation/Connection Server HowTo.doc has changed
Binary file datacommsserver/esockserver/Documentation/Connection Stack_How_To.doc has changed
Binary file datacommsserver/esockserver/Documentation/Control Plane Connection Stack(phase 1).doc has changed
Binary file datacommsserver/esockserver/Documentation/Design for Flexible Comms Stack.doc has changed
Binary file datacommsserver/esockserver/Documentation/ESOCK Component Test Specification.doc has changed
Binary file datacommsserver/esockserver/Documentation/ESock_CESockIniData_Te_Ini_Test_Specification.doc has changed
Binary file datacommsserver/esockserver/Documentation/ESock_Design.doc has changed
Binary file datacommsserver/esockserver/Documentation/ESock_HowTo.doc has changed
Binary file datacommsserver/esockserver/Documentation/Esock_CR1039_CommsData_ Plug-in_Design_Document.doc has changed
Binary file datacommsserver/esockserver/Documentation/Esock_integration_test_specification.doc has changed
Binary file datacommsserver/esockserver/Documentation/HOWTO install an esock protocol after market.doc has changed
Binary file datacommsserver/esockserver/Documentation/NonSeamlessBearerMobility_ClientSideAPIs.doc has changed
Binary file datacommsserver/esockserver/Documentation/NonSeamlessBearerMobility_ReferenceImplementation.doc has changed
Binary file datacommsserver/esockserver/Documentation/NonSeamlessBearerMobility_ServerSideAPIs.doc has changed
Binary file datacommsserver/esockserver/Documentation/RConnection API for Connection Management.doc has changed
Binary file datacommsserver/esockserver/Documentation/RConnection deprecated methods HOWTO.doc has changed
Binary file datacommsserver/esockserver/Documentation/RConnection_API.doc has changed
Binary file datacommsserver/esockserver/Documentation/RConnection_Test_Specification.doc has changed
Binary file datacommsserver/esockserver/Documentation/RInternalSocket_TE_EintSock_Test_Specification.doc has changed
Binary file datacommsserver/esockserver/Documentation/RSubConnection_API.doc has changed
Binary file datacommsserver/esockserver/Documentation/TS_Multihoming_Test_Specification.doc has changed
--- a/datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitymcpractivities.h	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitymcpractivities.h	Tue Jan 26 13:09:14 2010 +0200
@@ -52,6 +52,7 @@
 	
 private:
 	TBool EvaluatePreference(TContext& aContext);
+
     void SetHandshakingFlag();
     void ClearHandshakingFlag();
 
@@ -78,6 +79,10 @@
 	DECLARE_SMELEMENT_HEADER(TNoTagOrAwaitMobilityBackwardsOnMobilityTrigger, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, CMobilityActivity::TContext)
 		virtual TInt TransitionTag();
 	DECLARE_SMELEMENT_FOOTER(TNoTagOrAwaitMobilityBackwardsOnMobilityTrigger)
+
+	DECLARE_SMELEMENT_HEADER(TRejectedOrStartMobilityHandshakeBackwards, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext)
+        virtual TInt TransitionTag();
+    DECLARE_SMELEMENT_FOOTER(TRejectedOrStartMobilityHandshakeBackwards)
 	
 	DECLARE_SMELEMENT_HEADER(TClearHandshakingFlag, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CMobilityActivity::TContext)
 		virtual void DoL();
--- a/datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitymcprstates.h	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitymcprstates.h	Tue Jan 26 13:09:14 2010 +0200
@@ -41,6 +41,7 @@
 
 const TInt KStartMobilityHandshake	= 10000;
 const TInt KAwaitMobility        	= 10001;
+const TInt KRejected                = 10002;
 
 //-=========================================================
 //
--- a/datacommsserver/esockserver/MobilityCoreProviders/src/mobilitymcpractivities.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/MobilityCoreProviders/src/mobilitymcpractivities.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -100,7 +100,7 @@
 	//first checks (TNoTagOrAwaitMobilityBlockedByErrorRecovery) if the availability has changed since it last checked 
 	//(availability could have been reported amidst the previous handshake loop) 
 	THROUGH_NODEACTIVITY_ENTRY(MobilityMCprStates::KStartMobilityHandshake, CMobilityActivity::TClearHandshakingFlag, CMobilityActivity::TNoTagOrAwaitMobilityBlockedByErrorRecovery)
-	NODEACTIVITY_ENTRY(MobilityMCprStates::KAwaitMobility, MeshMachine::TDoNothing, CMobilityActivity::TAwaitingCurrentCarrierRejectedOrAvailabilityChange, CMobilityActivity::TNoTagOrAwaitMobilityBackwardsOnMobilityTriggerBlockedByErrorRecovery)
+	    NODEACTIVITY_ENTRY(MobilityMCprStates::KAwaitMobility, MeshMachine::TDoNothing, CMobilityActivity::TAwaitingCurrentCarrierRejectedOrAvailabilityChange, CMobilityActivity::TNoTagOrAwaitMobilityBackwardsOnMobilityTriggerBlockedByErrorRecovery)
 
 		//Mobility has been triggered ((a) or (b)). Start mobility handshake (set handshaking flag and inform the client about the preferred bearer) 
 		NODEACTIVITY_ENTRY(KNoTag, CMobilityActivity::TInformMigrationAvailableAndSetHandshakingFlag, MobilityMCprStates::TAwaitingMigrationRequestedOrRejected, CMobilityActivity::TNoTagOrStartMobilityHandshakeBackwards)
@@ -112,7 +112,8 @@
 		NODEACTIVITY_ENTRY(KNoTag, CMobilityActivity::TRequestReConnect, MCprStates::TAwaitingReConnectCompleteOrError, CMobilityActivity::TNoTagOrStartMobilityHandshakeBackwards)
 		//Rebinding has been successful. As far as MCPR is concerned, the mobility is finished, but the MCPR must await
 		//for the handshake (accept|reject) before it can offer another bearer. 
-		NODEACTIVITY_ENTRY(KNoTag, CMobilityActivity::TInformMigrationCompleted, MobilityMCprStates::TAwaitingMigrationAcceptedOrRejected, MeshMachine::TTag<MobilityMCprStates::KStartMobilityHandshake|EBackward>)
+        NODEACTIVITY_ENTRY(KNoTag, CMobilityActivity::TInformMigrationCompleted, MobilityMCprStates::TAwaitingMigrationAcceptedOrRejected, CMobilityActivity::TRejectedOrStartMobilityHandshakeBackwards)
+        NODEACTIVITY_ENTRY(MobilityMCprStates::KRejected, CoreNetStates::TStopDataClients, CoreNetStates::TAwaitingDataClientsStopped, MeshMachine::TTag<MobilityMCprStates::KStartMobilityHandshake|NetStateMachine::EBackward>)
 NODEACTIVITY_END()
 }
 
@@ -311,6 +312,53 @@
 	return MobilityMCprStates::KAwaitMobility;
 	}
 
+
+DEFINE_SMELEMENT(CMobilityActivity::TRejectedOrStartMobilityHandshakeBackwards, NetStateMachine::MStateFork, MobilityMCprStates::TContext)
+TInt CMobilityActivity::TRejectedOrStartMobilityHandshakeBackwards::TransitionTag()
+    {
+	__ASSERT_DEBUG(iContext.iNodeActivity, User::Panic(KCoreMobileMCprPanic, KPanicNoActivity));
+	CMobilityActivity& activity = static_cast<CMobilityActivity&>(*iContext.iNodeActivity);
+
+	// if rejected last ap and there's no more
+	if (iContext.iMessage.IsMessage<TCFMobilityProvider::TMigrationRejected>())
+		{
+		TBool otherSP = EFalse;
+		
+		// Find if there anymore available non rejected service providers
+		TClientIter<TDefaultClientMatchPolicy> iter = iContext.Node().GetClientIter<TDefaultClientMatchPolicy>(TClientType(TCFClientType::EServProvider));
+		__ASSERT_DEBUG(iter[0], User::Panic(KCoreMobileMCprPanic, KPanicNoServiceProvider)); //A Service Provider must exist!
+		RMetaServiceProviderInterface* rejected = static_cast<RMetaServiceProviderInterface*>(iContext.Node().ServiceProvider());
+		RMetaServiceProviderInterface* candidate = NULL;
+		
+		while ((candidate = static_cast<RMetaServiceProviderInterface*>(iter++)) != NULL)
+			{
+			if (candidate == rejected)
+				{
+				continue;
+				}
+			
+			const TAvailabilityStatus& status = candidate->AvailabilityStatus();
+			if (!status.IsKnown())
+				{
+				continue;
+				}
+
+			if (status.Score() > activity.iAvailabilityScoreTreshold)
+				{
+				otherSP=ETrue;
+				break;
+				}
+			}
+
+		if (!otherSP)
+			{
+			return MobilityMCprStates::KRejected;
+			}
+		}
+
+    return MobilityMCprStates::KStartMobilityHandshake | NetStateMachine::EBackward;
+    }
+
 DEFINE_SMELEMENT(CMobilityActivity::TSendAvailabilityRequest, NetStateMachine::MStateTransition, CMobilityActivity::TContext)
 void CMobilityActivity::TSendAvailabilityRequest::DoL()
 	{
--- a/datacommsserver/esockserver/core_states/ss_corepractivities.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/core_states/ss_corepractivities.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -1891,6 +1891,39 @@
 
 EXPORT_C CStartActivity::~CStartActivity()
 	{
+    CMMCommsProviderBase& node(static_cast<CMMCommsProviderBase&>(iNode));
+    const TProviderInfoExt* providerInfoExt = static_cast<const TProviderInfoExt*>(node.AccessPointConfig().FindExtension(
+            STypeId::CreateSTypeId(TProviderInfoExt::EUid, TProviderInfoExt::ETypeId)));
+    
+    __ASSERT_DEBUG(providerInfoExt, User::Panic(KSpecAssert_ESockCrStaCPRAC, 40));
+
+    if (Error() != KErrNone)
+        {
+		CNodeActivityBase* stopActivity = iNode.FindActivityById(ECFActivityStop);
+
+		// If the Stop activity is running we skip sending the GoneDown message. This is because the Stop
+		// activity will send GoneDown too. 
+		if (!stopActivity)
+		    {
+            TCFControlClient::TGoneDown goneDown(Error(), providerInfoExt->iProviderInfo.APId());
+        
+            TClientIter<TDefaultClientMatchPolicy> iter = iNode.GetClientIter<TDefaultClientMatchPolicy>(
+                    TClientType(TCFClientType::ECtrl), TClientType(0, TCFClientType::ELeaving));
+            RNodeInterface* ctrlClient = NULL;
+
+            while ( (ctrlClient = iter++) )
+                {
+                // Let control clients know the node has gone down, other than those that originated Start (they will be errored by ~CNodeActivityBase)...
+                if (FindOriginator(*ctrlClient) >= 0)
+                    {
+                    continue; // ControlClient is a Start originator
+                    }
+                    
+                TNodeCtxId ctxId(ActivityId(), iNode.Id());
+                ctrlClient->PostMessage(ctxId, goneDown.CRef());
+                }
+		    }
+        }
 	}
 
 EXPORT_C MeshMachine::CNodeActivityBase* CStartActivity::NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode)
--- a/datacommsserver/esockserver/core_states/ss_coreprstates.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/core_states/ss_coreprstates.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -1204,9 +1204,10 @@
 	TClientIter<TDefaultClientMatchPolicy> iter = iContext.Node().GetClientIter<TDefaultClientMatchPolicy>(TClientType(TCFClientType::ECtrl));
 	for (TInt i = 0; iter[i]; i++)
 		{
-		//Send TGoneUp to every Ctrl client except the originator (who would be recieving TStarted)
-		if ((iContext.iNodeActivity && iContext.iNodeActivity->FindOriginator(*iter[i]) != KErrNone)
-			&& iter[i] != iContext.iPeer)
+		// Send TGoneUp to every Ctrl client except the originator (who would be recieving TStarted)
+		// (activity might be the GoneUp Activity rather than the Start Activity, but then the originator
+		// would be a ServiceProvider, and so the ControlClient will not be found)
+		if (iContext.iNodeActivity && iContext.iNodeActivity->FindOriginator(*iter[i]) == KErrNotFound)
 			{
 			iter[i]->PostMessage(TNodeCtxId(iContext.ActivityId(), iContext.NodeId()), TCFControlClient::TGoneUp());
 			}
@@ -1291,17 +1292,22 @@
 
 	TCFControlClient::TGoneDown goneDown(stopCode, providerInfo.APId());
 	TClientIter<TDefaultClientMatchPolicy> iter = iContext.Node().GetClientIter<TDefaultClientMatchPolicy>(TClientType(TCFClientType::ECtrl));
-	for (TInt i = 0; iter[i]; i++)
+    CNodeActivityBase* startActivity = iContext.Node().FindActivityById(ECFActivityStart);
+
+    for (TInt i = 0; iter[i]; i++)
 		{
-		CNodeActivityBase* startActivity = iContext.Node().FindActivityById(ECFActivityStart);
-
 		//Send TGoneDown to every Ctrl client except
 		// * the originator (who would be recieving TStopped)
 		// * originators of the start activity (these will be errored separately)
-		if (((iContext.iNodeActivity && iContext.iNodeActivity->FindOriginator(*iter[i]) != KErrNone) ||
-				(iContext.iNodeActivity == NULL && iter[i] != iContext.iPeer))
-			&& (startActivity == NULL || startActivity->FindOriginator(*iter[i]) != KErrNone))
+        if (iContext.iNodeActivity && iContext.iNodeActivity->FindOriginator(*iter[i]) >= 0)
+            {
+            continue; // ControlClient is a Stop originator
+            }
+		
+        // So far the control client is not a Stop originator
+        if (startActivity == NULL || startActivity->FindOriginator(*iter[i]) == KErrNotFound)
 			{
+            // ControlClient is not a Start originator
 			iter[i]->PostMessage(TNodeCtxId(iContext.ActivityId(), iContext.NodeId()), goneDown);
 			}
 		}
--- a/datacommsserver/esockserver/csock/CS_CLI.CPP	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/csock/CS_CLI.CPP	Tue Jan 26 13:09:14 2010 +0200
@@ -1221,7 +1221,8 @@
 @param someFlags Flags which are passed through to protocol
 @param aStatus On completion, KErrNone if successful, otherwise one of the system 
 wide error codes. Note that KErrEof indicates that the socket has been shutdown 
-with option EStopOutput.
+with option EStopOutput. In the case of KSONonBlockingIO & writeFlowedoff, 
+it has to return KerrWouldBlock, but it returns KErrNone for compatibiity
 @param aLen Filled in with amount of data sent before completion
 
 @capability Dependent on the type of socket so deferred to PRT */
--- a/datacommsserver/esockserver/inc/ss_nodemessages_legacy_internal.h	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/inc/ss_nodemessages_legacy_internal.h	Tue Jan 26 13:09:14 2010 +0200
@@ -285,7 +285,6 @@
     virtual void ProcessL(MeshMachine::TNodeContextBase& aContext);
 
 	virtual void Cancel(MeshMachine::TNodeContextBase& aContext);
-	virtual TInt CheckError(MeshMachine::TNodeContextBase& aContext, TInt aError);
 
 private:
 	TBool HasServiceProviderL(const Messages::TRuntimeCtxId& aRecipient);
@@ -350,7 +349,6 @@
     virtual void ProcessL(MeshMachine::TNodeContextBase& aContext);
 
 	virtual void Cancel(MeshMachine::TNodeContextBase& aContext);
-	virtual TInt CheckError(MeshMachine::TNodeContextBase& aContext, TInt aError);
 
 public:
     DECLARE_MVIP_CTR(TLegacyDataMonitoringNotificationRequest)
--- a/datacommsserver/esockserver/ssock/ss_api_ext.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/ssock/ss_api_ext.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -305,6 +305,7 @@
 
     TBool platsecResult;
     platsecResult = aPolicy.CheckPolicy(process);
+    process.Close();
     if (!platsecResult)
         {
         return KErrPermissionDenied;
--- a/datacommsserver/esockserver/ssock/ss_commsdataobject.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/ssock/ss_commsdataobject.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -41,7 +41,7 @@
 	TUint interfaceId = (*iDataObject)->RequiredItfExtId();
 	RLegacyResponseMsg responseMsg(aContext, iMessage, iMessage.Int0());
 	TRAPD(err, ForwardRequestL(aContext));
-	if(err == KErrNotFound)
+	if(err == KErrNotReady)
 		{
 		// We've reached the bottom of the stack, so complete the message
 		if ((*iDataObject)->IsProgressive())
@@ -104,7 +104,7 @@
 	    // forward the data object down to the next node
 	    TRAP(err, ForwardRequestL(aContext));
 
-		if(err == KErrNotFound)
+		if(err == KErrNotReady)
 			{
 			// We've reached the bottom of the stack, so complete the message
 			Complete(aContext, KErrNone);
--- a/datacommsserver/esockserver/ssock/ss_connLegacy.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/ssock/ss_connLegacy.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -353,13 +353,11 @@
 
 void AConnectionLegacy::CompleteAllInterfaceNotificationL(TInt aError)
 	{
-	LOG(ESockLog::Printf(KESockConnectionTag, _L8("AConnectionLegacy [this=%08x] CompleteAllInterfaceNotificationL message (%08X) with %d"), &iConnection, iAllInterfaceNotificationMessage.Handle(), aError));
-
-	if(!iAllInterfaceNotificationMessage.IsNull())
+	if (!iAllInterfaceNotificationMessage.IsNull())
 		{
 		if(aError == KErrNone)
 			{
-			if(!iNotificationQueue.IsEmpty())
+			if (!iNotificationQueue.IsEmpty())
 				{
 				TInterfaceNotification notification;
 				iNotificationQueue.Deque(notification);
@@ -368,12 +366,14 @@
 
 				// Write the buffer to the client
 				iAllInterfaceNotificationMessage.WriteL(0, buf);
+			    LOG(ESockLog::Printf(KESockConnectionTag, _L8("AConnectionLegacy [this=%08x] CompleteAllInterfaceNotificationL, RMessage2::Complete (%08x) with 0"), &iConnection, iAllInterfaceNotificationMessage.Handle()));
 				iAllInterfaceNotificationMessage.Complete(KErrNone);
 				iAllInterfaceNotificationMessage = RMessage2();
 				}
 			}
 		else
 			{
+            LOG(ESockLog::Printf(KESockConnectionTag, _L8("AConnectionLegacy [this=%08x] CompleteAllInterfaceNotificationL, RMessage2::Complete (%08x) with %d"), &iConnection, iAllInterfaceNotificationMessage.Handle(), aError));
 			iAllInterfaceNotificationMessage.Complete(aError);
 			iAllInterfaceNotificationMessage = RMessage2();
 			}
--- a/datacommsserver/esockserver/ssock/ss_connstates.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/ssock/ss_connstates.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -1707,15 +1707,13 @@
 DEFINE_SMELEMENT(THandleRMessage2Error, NetStateMachine::MStateTransition, ConnStates::TContext)
 void THandleRMessage2Error::DoL()
     {
-    CConnLegacyRMessage2Activity* act = static_cast<CConnLegacyRMessage2Activity*>(iContext.Activity());
-	
+	CConnLegacyRMessage2Activity* act = static_cast<CConnLegacyRMessage2Activity*>(iContext.Activity());
 	ASSERT(act->Message().IsTypeOf(Meta::STypeId::CreateSTypeId(TCFSigLegacyRMessage2Ext::EUid, TCFSigLegacyRMessage2Ext::ETypeId)));
 	TInt error = static_cast<TCFSigLegacyRMessage2Ext&>(act->Message()).CheckError(iContext, act->Error());
 	act->SetError(error);
 	act->Complete(error);
     }
 
-
 DEFINE_SMELEMENT(TCancelAllLegacyRMessage2Activities, NetStateMachine::MStateTransition, TContext)
 void TCancelAllLegacyRMessage2Activities::DoL()
 	{
--- a/datacommsserver/esockserver/ssock/ss_intsock.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/ssock/ss_intsock.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -1195,10 +1195,19 @@
 					ret = KErrNoMemory;
 					}
 				}
-			if(ret == KErrNone && (iOptions & KOptBlocking))
-				{
-				completeReq = EFalse;
-				}
+			if(ret == KErrNone)
+			    {
+                if(iOptions & KOptBlocking)
+                    {
+                    completeReq = EFalse;
+                    }
+                else if(iBlockedOperations & EWriteFlowedOff)
+                    {
+                    //it should return KErrWouldBlock instead of KErrNone
+                    //but it returns KErrNone for backward compatibility.
+                    iSendData.Free();
+                    }
+			    }
 			}
 		}
 	else	// !IsStream()
@@ -1317,8 +1326,12 @@
 			if (nwr == 0)
 				{
 				// Flow unable to accept data but not erroring
-				completeReq = EFalse;
-				iSendData.Assign(data);
+                // WriteFlowedOff
+                if(iOptions & KOptBlocking)
+                    {
+                    completeReq = EFalse;
+                    iSendData.Assign(data);
+                    }
 				}
 
 			if (iErrorOperationMask & (MSessionControlNotify::EErrorSend))
--- a/datacommsserver/esockserver/ssock/ss_nodemessages_legacy.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/ssock/ss_nodemessages_legacy.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -122,7 +122,7 @@
     	}
 	else
 		{
-		User::Leave(KErrNotFound);
+		User::Leave(KErrNotReady);
 		}
 
 	}
@@ -308,7 +308,7 @@
 	{
 	CConnection* conn = static_cast<CConnection*>(&aContext.Node());
     ConnActivities::CConnLegacyRMessage2Activity* act = static_cast<ConnActivities::CConnLegacyRMessage2Activity*>(aContext.Activity());
-    if (aError == KErrNotFound)
+    if (aError == KErrNotReady)
         {
         TPckgBuf<TStateChange> progressBuf;
 		progressBuf().iStage = conn->iLastProgress.iStage;
@@ -372,7 +372,7 @@
 	{
 	CConnection* conn = static_cast<CConnection*>(&aContext.Node());
     ConnActivities::CConnLegacyRMessage2Activity* act = static_cast<ConnActivities::CConnLegacyRMessage2Activity*>(aContext.Activity());
-    if (aError == KErrNotFound)
+    if (aError == KErrNotReady)
         {
         TPckgBuf<TStateChange> progressBuf;
 		progressBuf().iStage = conn->iLastProgressError.iStage;
@@ -646,15 +646,6 @@
 	// do nothing, a DataMonitoringTransferedRequest cannot be cancelled as the response is immediate
 	}
 
-TInt TLegacyDataMonitoringTransferredRequest::CheckError(MeshMachine::TNodeContextBase& /*aContext*/, TInt aError)
-	{
-	if (aError == KErrNotFound)
-		{
-		return KErrNotReady;
-		}
-	return aError;
-	}
-
 /**
 Return ETrue if the node has a Service Provider, else EFalse.
 
@@ -779,11 +770,6 @@
     	}
 	}
 
-TInt TLegacyDataMonitoringNotificationRequest::CheckError(MeshMachine::TNodeContextBase& /*aContext*/, TInt aError)
-	{
-	return aError;
-	}
-
 /**
  *
  * TLegacyEnumerateSubConnections
@@ -890,7 +876,7 @@
 			// it or we hit the bottom
 			TRAP(ret, ForwardRequestL(aContext));
 			
-			if(ret == KErrNotFound)
+			if(ret == KErrNotReady)
 				{
 				// We've reached the bottom of the stack and control call was never serviced
 				User::Leave(KErrNotSupported);
--- a/datacommsserver/esockserver/ssock/ss_roles.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/ssock/ss_roles.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -143,7 +143,7 @@
 			}
 		}
 
-	LOG(ESockLog::Printf(KESockBootingTag, _L8("CPlayer::MaybeSetPlayerShutdownComplete(), shutdownComplete = %d [#subSess=%d, numFam=%d, dataPending=%d]"),
+	LOG(ESockLog::Printf(KESockBootingTag, _L8("CPlayer::IsPlayerShutdownComplete(), shutdownComplete = %d [#subSess=%d, numFam=%d, dataPending=%d]"),
 		shutdownComplete, SubSessions().Count(), globals->iNumFamilies, dataThreadShutdownPending) );
 
 	if(globals->iNumFamilies)
Binary file datacommsserver/esockserver/test/TE_EsockTestSteps/Documentation/TE_EsockTestSteps_Test Specification.doc has changed
--- a/datacommsserver/esockserver/test/TE_EsockTestSteps/group/te_EsockTestStepsSuite.mmp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/group/te_EsockTestStepsSuite.mmp	Tue Jan 26 13:09:14 2010 +0200
@@ -72,7 +72,7 @@
 LIBRARY	    commdb.lib
 LIBRARY	    efsrv.lib
 LIBRARY	    ecom.lib
-LIBRARY	    etel.lib etelmm.lib
+LIBRARY	    etel.lib etelmm.lib etelpckt.lib
 LIBRARY	    c32root.lib
 LIBRARY	    netmeta.lib
 LIBRARY     esocksvr.lib
--- a/datacommsserver/esockserver/test/TE_EsockTestSteps/group/te_EsockTestStepsSuite_captest.mmp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/group/te_EsockTestStepsSuite_captest.mmp	Tue Jan 26 13:09:14 2010 +0200
@@ -74,7 +74,7 @@
 LIBRARY	    commdb.lib
 LIBRARY	    efsrv.lib
 LIBRARY	    ecom.lib
-LIBRARY	    etel.lib etelmm.lib
+LIBRARY	    etel.lib etelmm.lib etelpckt.lib
 LIBRARY	    c32root.lib
 LIBRARY	    netmeta.lib
 LIBRARY     esocksvr.lib
--- a/datacommsserver/esockserver/test/TE_EsockTestSteps/inc/ConnectionServer.TestSteps.h	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/inc/ConnectionServer.TestSteps.h	Tue Jan 26 13:09:14 2010 +0200
@@ -451,6 +451,26 @@
 _LIT(KSetPppAccessPointAvailabilityStep, "SetPppAccessPointAvailabilityStep");
 
 /**
+Class implementing CSetPacketDataAccessPointAvailabilityStep
+
+@internalComponent
+@description Enables the setting of PDP availability status on access points for simulation of availability
+*/
+class CSetPacketDataAccessPointAvailabilityStep : public CTe_EsockStepBase
+    {
+public:
+    CSetPacketDataAccessPointAvailabilityStep(CCEsockTestBase*& aEsockTest);
+    TVerdict doTestStepPreambleL();
+    TVerdict doSingleTestStep();
+    TInt ConfigureFromIni();
+
+private:
+    TBool iSetToAvailable;
+    };
+
+_LIT(KSetPacketDataAccessPointAvailabilityStep, "SetPacketDataAccessPointAvailabilityStep");
+
+/**
 Class implementing CSetWifiAccessPointAvailabilityStep
 
 @internalComponent
--- a/datacommsserver/esockserver/test/TE_EsockTestSteps/src/ConnectionServer.TestSteps.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/src/ConnectionServer.TestSteps.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -1756,6 +1756,160 @@
 	return TestStepResult();
 	}
 
+// Packet Data (PDP) specific availability simulation
+CSetPacketDataAccessPointAvailabilityStep::CSetPacketDataAccessPointAvailabilityStep(CCEsockTestBase*& aEsockTest)
+:   CTe_EsockStepBase(aEsockTest)
+    {
+    SetTestStepName(KSetPppAccessPointAvailabilityStep);
+    }
+
+TVerdict CSetPacketDataAccessPointAvailabilityStep::doTestStepPreambleL()
+    {
+    SetTestStepResult(EFail);
+
+    if (iEsockTest==NULL)
+        iEsockTest = new (ELeave) CCEsockTestBase;
+
+    SetTestStepResult(EPass);
+    return TestStepResult();
+    }
+
+
+TInt CSetPacketDataAccessPointAvailabilityStep::ConfigureFromIni()
+    {
+    TBool found(EFalse);
+    TPtrC availState;
+    if(GetStringFromConfig(iSection, KAccessPointState, availState))
+        {
+        if (availState == KAvailable)
+            {
+            iSetToAvailable = ETrue;
+            found=ETrue;
+            }
+        else if (availState == KUnavailable)
+            {
+            iSetToAvailable = EFalse;
+            found=ETrue;
+            }
+        }
+
+    if( ! found)
+        {
+        INFO_PRINTF1(_L("Must have availability status set to Available or Unavailable."));
+        return KErrArgument;
+        }
+    
+    // All ok if we got this far
+    return KErrNone;
+    }
+
+_LIT(KSimtsyName,"SIM");
+
+TVerdict CSetPacketDataAccessPointAvailabilityStep::doSingleTestStep()
+    {
+    // Fail by default
+    SetTestStepResult(EFail);
+
+    // Action 1- RTelServer::Connect
+    RTelServer telServer;
+    TInt ret = telServer.Connect();
+    if (ret!=KErrNone)
+        {
+        INFO_PRINTF1(_L("Failed to connect to telephony server"));
+        }
+    else
+        {
+        // Action 2- RTelServer::LoadPhoneModule
+        ret=telServer.LoadPhoneModule(KSimtsyName);
+        if (ret!=KErrNone)
+            {
+            INFO_PRINTF1(_L("Failed to load phone module"));
+            }
+        else
+            {
+            // Action 3- RPhone::Open
+            RPhone phone;
+            ret=phone.Open(telServer,KPhoneName) ;
+            if (ret!=KErrNone)
+                {
+                INFO_PRINTF1(_L("Failed to open phone module"));
+                }
+            else
+                {
+                // Action 4- RPhone::Initialise
+                ret=phone.Initialise();
+                if (ret!=KErrNone)
+                    {
+                    INFO_PRINTF1(_L("Failed to initialise the phone"));
+                    }
+                else
+                    {
+                    // Action 5- RPacketService::Open
+                    RPacketService packetService;
+                    ret = packetService.Open(phone);
+                    if (ret!=KErrNone)
+                        {
+                        INFO_PRINTF1(_L("Failed to initialise the packet service"));
+                        }
+                    else
+                        {
+                        // Action 6- RPacketService::NotifyStatusChange
+                        TRequestStatus notifyStatus;
+                        RPacketService::TStatus pktStatus;
+                        packetService.NotifyStatusChange(notifyStatus,pktStatus);
+                        
+                        // Action 7- RPacketService::Attach/Detach
+                        TRequestStatus status;
+                        if(iSetToAvailable)
+                            {
+                            packetService.Attach(status);
+                            }
+                        else
+                            {
+                            packetService.Detach(status);
+                            }
+                        User::WaitForRequest(status);
+                        User::WaitForRequest(notifyStatus);
+                    
+                        if(status.Int() != KErrNone )
+                            {
+                            INFO_PRINTF1(_L("Failed to attach/detach the packet service"));
+                            }
+                        else if( notifyStatus.Int() != KErrNone )
+                            {
+                            INFO_PRINTF1(_L("Failed to receive notification of packet service attach/detach"));
+                            }
+                        else
+                            {
+                            // Success at last!!!
+                            SetTestStepResult(EPass);
+                            }
+                        
+                        // now clean up:
+                        
+                        // Action 5- RPacketService::Open
+                        packetService.Close();
+                        }
+                    // Action 4- RPhone::Initialise
+                    // don't need to "un-Initialise" phone
+                    }
+                // Action 3- RPhone::Open
+                phone.Close();
+                }
+            // Action 2- RTelServer::LoadPhoneModule
+            telServer.UnloadPhoneModule(KSimtsyName);            
+            }
+        // Action 1- RTelServer::Connect
+        telServer.Close();
+        }
+    // There! CleanupStack ShmeanupStack.
+    User::LeaveIfError(ret);
+
+    return TestStepResult();
+    }
+
+
+
 // wifi specific availability simulation
 // Requires the "MockupWifiHardware" emulation mechanism to be enabled on udeb
 CSetWifiAccessPointAvailabilityStep::CSetWifiAccessPointAvailabilityStep(CCEsockTestBase*& aEsockTest)
--- a/datacommsserver/esockserver/test/TE_EsockTestSteps/src/Te_esockteststepsSuiteServer.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/src/Te_esockteststepsSuiteServer.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -391,7 +391,8 @@
 	NEW_ESOCK_TESTSTEP(CancelMBMSNtfnStep)
 	// Availability control
 	NEW_ESOCK_TESTSTEP(SetAccessPointAvailabilityStep)
-	NEW_ESOCK_TESTSTEP(SetPppAccessPointAvailabilityStep)
+    NEW_ESOCK_TESTSTEP(SetPppAccessPointAvailabilityStep)
+    NEW_ESOCK_TESTSTEP(SetPacketDataAccessPointAvailabilityStep)
 	NEW_ESOCK_TESTSTEP(SetWifiAccessPointAvailabilityStep)
 
 	NEW_ESOCK_TESTSTEP(EnumerateConnectionsStep)
--- a/datacommsserver/esockserver/test/TE_RConnection/configs/Mobility/BearerMobility_001.ced.cfg	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnection/configs/Mobility/BearerMobility_001.ced.cfg	Tue Jan 26 13:09:14 2010 +0200
@@ -310,6 +310,77 @@
 	FIELD_COUNT=71
 END_ADD
 
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=Dummy timeout if orphan1
+	IfName=dummynif
+	PortName=COMM::1
+	TSYName=MM
+	CSYName=ECUART
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=10
+	LastSocketClosedTimeout=-1
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=0
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageValidityPeriod=0
+	MessageDeliveryReport=TRUE
+	MinimumSignalLevel=0
+	Agent=NULLAGT.agt
+	FIELD_COUNT=66
+END_ADD
+
 ############################################################
 ## LANBearer
 ## 
@@ -629,34 +700,32 @@
 
 ADD_SECTION
 # COMMDB_ID = 7
-	Id=20
-	Name=IPProtoMappedFromIAP1
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
+	Id=7
+	Name=dummynif2MappedFromIAP7
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
 	AccessPointSelectionPolicy=0
-	Cpr=CprTable.2
-	CprConfig=1
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
+	Cpr=CprTable.3
+	CprConfig=7
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.8
 	AppSID=0
-	CustomSelectionPolicy=1
-	FIELD_COUNT=11
+	FIELD_COUNT=10
 END_ADD
 
 ADD_SECTION
 # COMMDB_ID = 8
-	Id=21
-	Name=IPProtoMappedFromIAP2
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
+	Id=8
+	Name=dummynif2MappedFromIAP8
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
 	AccessPointSelectionPolicy=0
-	Cpr=CprTable.2
-	CprConfig=2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
+	Cpr=CprTable.3
+	CprConfig=8
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.8
 	AppSID=0
-	CustomSelectionPolicy=2
-	FIELD_COUNT=11
+	FIELD_COUNT=10
 END_ADD
 
 ADD_SECTION
@@ -828,6 +897,99 @@
 	FIELD_COUNT=10
 END_ADD
 
+ADD_SECTION
+# COMMDB_ID = 20
+	Id=58
+	Name=SNAP58
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	AccessPointSelectionPolicy=APPrioritySelectionPolicyTable.8
+	Cpr=CprTable.1
+	CprConfig=0
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 21
+	Id=59
+	Name=IPProtoMappedFromIAP7
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.2
+	CprConfig=7
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	AppSID=0
+	CustomSelectionPolicy=7
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 22
+	Id=61
+	Name=IPProtoMappedFromIAP8
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.2
+	CprConfig=8
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	AppSID=0
+	CustomSelectionPolicy=8
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 23
+	Id=62
+	Name=SNAP62
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	AccessPointSelectionPolicy=APPrioritySelectionPolicyTable.9
+	Cpr=CprTable.1
+	CprConfig=0
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 24
+	Id=20
+	Name=IPProtoMappedFromIAP1
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.2
+	CprConfig=1
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	AppSID=0
+	CustomSelectionPolicy=1
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 25
+	Id=21
+	Name=IPProtoMappedFromIAP2
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.2
+	CprConfig=2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	AppSID=0
+	CustomSelectionPolicy=2
+	FIELD_COUNT=11
+END_ADD
 
 ############################################################
 ## OutgoingGPRS
@@ -955,6 +1117,33 @@
 END_ADD
 
 
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=cdgdummynifnosessiontimeout
+	IAPServiceType=DialOutISP
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=5
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=cdgdummynifnosessiontimeout2
+	IAPServiceType=DialOutISP
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=5
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+
 
 ############################################################
 ## APPrioritySelectionPolicyTable
@@ -1023,6 +1212,25 @@
 	FIELD_COUNT=5
 END_ADD
 
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=SelectionPolicy8
+	AP1=Link.AccessPointTable.59
+	AP2=Link.AccessPointTable.61
+	APCOUNT=2
+	FIELD_COUNT=4
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=SelectionPolicy9
+	AP1=Link.AccessPointTable.59
+	AP2=Link.AccessPointTable.61
+	AP3=Link.AccessPointTable.23
+	APCOUNT=3
+	FIELD_COUNT=5
+END_ADD
+
 ############################################################
 ## TierTable
 ## 
Binary file datacommsserver/esockserver/test/TE_RConnection/documentation/GT0429 - PDP Contention Management Test Specification.doc has changed
Binary file datacommsserver/esockserver/test/TE_RConnection/documentation/SGL.GT0253.202 Non-Seamless Bearer Mobility - Test Spec.doc has changed
Binary file datacommsserver/esockserver/test/TE_RConnection/documentation/SGL.GT0253.220 Data Monitoring - Test Specification.doc has changed
Binary file datacommsserver/esockserver/test/TE_RConnection/documentation/TE_RConnection_Test_Specification.doc has changed
--- a/datacommsserver/esockserver/test/TE_RConnection/group/bld.inf	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnection/group/bld.inf	Tue Jan 26 13:09:14 2010 +0200
@@ -267,6 +267,8 @@
 
 ../scripts/Mobility/Mobility_761402.script z:/testdata/scripts/bearermobility/mobility_761402.script
 ../scripts/Mobility/Mobility_761403.script z:/testdata/scripts/bearermobility/mobility_761403.script
+../scripts/Mobility/Mobility_761404.script z:/testdata/scripts/bearermobility/mobility_761404.script
+../scripts/Mobility/Mobility_761405.script z:/testdata/scripts/bearermobility/mobility_761405.script
 ../scripts/Mobility/Mobility_761406.script z:/testdata/scripts/bearermobility/mobility_761406.script
 ../scripts/Mobility/Mobility_780100.script z:/testdata/scripts/bearermobility/mobility_780100.script
 ../scripts/Mobility/Mobility_780110.script z:/testdata/scripts/bearermobility/mobility_780110.script
--- a/datacommsserver/esockserver/test/TE_RConnection/group/te_BearerMobilityTestSuite.mmp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnection/group/te_BearerMobilityTestSuite.mmp	Tue Jan 26 13:09:14 2010 +0200
@@ -41,6 +41,8 @@
 LIBRARY		testexecuteutils.lib
 LIBRARY		testexecutelogclient.lib
 LIBRARY		ecom.lib
+LIBRARY		esock_api_ext.lib
+LIBRARY		insock.lib
 
 START WINS
 BASEADDRESS		0x59100000
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_RConnection/scripts/Mobility/Mobility_761404.script	Tue Jan 26 13:09:14 2010 +0200
@@ -0,0 +1,58 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+//! @file
+//! @SYMTestSuiteName NET-BEARERMOBILITY
+//! @SYMScriptTestEnvironment Standard Symbian HRP or emulator environment
+
+// Load the test suite
+LOAD_SUITE te_BearerMobilityTestSuite
+
+// Set up the comms database and start esock in preparation for the test
+RUN_SCRIPT Z:\TestData\scripts\te_esock_test_unloadesockForced.script
+CED -i z:\testdata\configs\BearerMobility\BearerMobility_001.ced.cfg c:\BearerMobility_001.ced.cfg.log
+RUN_SCRIPT z:\TestData\scripts\te_esock_test_loadesock.script
+
+
+START_TESTCASE			COMINF-ESOCK-RConnection-Mobility-3704
+//! @SYMTestCaseID             COMINF-ESOCK-RConnection-Mobility-3704
+//!@SYMTestCaseDesc            Test that rejecting a bearer doesn't hold it open
+//!@SYMPREQ                    PREQ1060
+//!@SYMAPI
+//Mobility
+//RCommsMobilityApiExt
+//!@SYMTestPriority            Critical
+//!@SYMTestActions
+//	   Bring up a snap with two bearers, both on.
+//         Kill the top priority.
+//         Accept the migration.
+//         Reject the new carrier.
+//         Verify that the new carrier has gone away.
+//         The new carrier should go away because of the short idle timer. The bearers in this test have only short idle timer to verify.
+//
+//!@SYMTestType                CIT
+//!@SYMTestExpectedResults     All progresses are as expected
+
+RUN_TEST_STEP 100 te_BearerMobilityTestSuite NET_BMOBILITY_761404 
+END_TESTCASE			COMINF-ESOCK-RConnection-Mobility-3704
+
+// Clean up
+RUN_SCRIPT Z:\TestData\Scripts\te_esock_test_stopallinterfaces.script
+RUN_SCRIPT Z:\TestData\scripts\te_esock_test_unloadesockForced.script
+
+PRINT Completed NET_BMOBILITY_761404
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_RConnection/scripts/Mobility/Mobility_761405.script	Tue Jan 26 13:09:14 2010 +0200
@@ -0,0 +1,59 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+//! @file
+//! @SYMTestSuiteName NET-BEARERMOBILITY
+//! @SYMScriptTestEnvironment Standard Symbian HRP or emulator environment
+
+// Load the test suite
+LOAD_SUITE te_BearerMobilityTestSuite
+
+// Set up the comms database and start esock in preparation for the test
+RUN_SCRIPT Z:\TestData\scripts\te_esock_test_unloadesockForced.script
+CED -i z:\testdata\configs\BearerMobility\BearerMobility_001.ced.cfg c:\BearerMobility_001.ced.cfg.log
+RUN_SCRIPT z:\TestData\scripts\te_esock_test_loadesock.script
+
+
+START_TESTCASE			COMINF-ESOCK-RConnection-Mobility-3705
+//! @SYMTestCaseID             COMINF-ESOCK-RConnection-Mobility-3705
+//!@SYMTestCaseDesc            Test that rejecting a bearer doesn't hold it open, yet we don't get KLinkLayerClosed by mistake
+//!@SYMPREQ                    PREQ1060
+//!@SYMAPI
+//Mobility
+//RCommsMobilityApiExt
+//!@SYMTestPriority            Critical
+//!@SYMTestActions
+//	   Bring up a snap with three bearers, all on.
+//	   Kill the top priority.
+//	   Accept the migration.
+//	   Reject the new carrier.
+//	   Verify that the new carrier has gone away.
+//	   Get offered the third priority.
+//	   Accept third priority
+//	   Verify KLinkLayerClosed is never received.
+//
+//!@SYMTestType                CIT
+//!@SYMTestExpectedResults     All progresses are as expected
+RUN_TEST_STEP 100 te_BearerMobilityTestSuite NET_BMOBILITY_761405
+END_TESTCASE			COMINF-ESOCK-RConnection-Mobility-3705
+
+// Clean up
+RUN_SCRIPT Z:\TestData\Scripts\te_esock_test_stopallinterfaces.script
+RUN_SCRIPT Z:\TestData\scripts\te_esock_test_unloadesockForced.script
+
+PRINT Completed NET_BMOBILITY_761405
+
+
+
--- a/datacommsserver/esockserver/test/TE_RConnection/scripts/te_RConnection_Mobility.script	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnection/scripts/te_RConnection_Mobility.script	Tue Jan 26 13:09:14 2010 +0200
@@ -56,6 +56,8 @@
 
 RUN_SCRIPT z:\testdata\scripts\BearerMobility\Mobility_761402.script
 RUN_SCRIPT z:\testdata\scripts\BearerMobility\Mobility_761403.script
+RUN_SCRIPT z:\testdata\scripts\BearerMobility\Mobility_761404.script
+RUN_SCRIPT z:\testdata\scripts\BearerMobility\Mobility_761405.script
 RUN_SCRIPT z:\testdata\scripts\BearerMobility\Mobility_761406.script
 
 RUN_SCRIPT z:\testdata\scripts\BearerMobility\Mobility_761500.script
--- a/datacommsserver/esockserver/test/TE_RConnection/src/te_BearerMobilityTestSuite.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnection/src/te_BearerMobilityTestSuite.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -22,8 +22,10 @@
 */
 
 #include "te_BearerMobilityTestSuite.h"
+#include <es_enum_internal.h>
 #include <ecom/ecom.h>
-
+#include <comms-infras/mobilitymessagesecom.h>
+#include <dummynifvar.h>
 
 using namespace ESock;
 
@@ -311,7 +313,449 @@
 		testStep = new CBearerMobilityTestStep_761402();
 	else if(aStepName.Compare(_L("NET_BMOBILITY_761403")) == 0)
 		testStep = new CBearerMobilityTestStep_761403();
+	else if(aStepName.Compare(_L("NET_BMOBILITY_761404")) == 0)
+		testStep = new CBearerMobilityTestStep_761404();
+	else if(aStepName.Compare(_L("NET_BMOBILITY_761405")) == 0)
+		testStep = new CBearerMobilityTestStep_761405();
 	
 	return testStep;
 	}
 
+const TInt KBufferLength = 512;
+const TInt KEchoPortNum = 8;
+TInt RequestInterfaceDownL(RConnection& conn, RSocketServ& ss)
+/**
+ * Sends a special packet to the dummy nif telling it to signal that the interface is down
+ * @param conn The connection to signal
+ * @param ss The socket server that the connection is within
+ * @return system wide error code
+ */
+{
+	TRequestStatus status;
+
+	TBuf8<KBufferLength> buffer;
+
+	RSocket sock;
+	TInetAddr dest;
+
+	User::LeaveIfError(sock.Open(ss, KAfInet, KSockDatagram, KProtocolInetUdp, conn));
+	CleanupClosePushL(sock);
+
+	User::LeaveIfError(sock.SetOpt(KSoReuseAddr, KSolInetIp, 1)); 
+	User::LeaveIfError(sock.SetLocalPort(KEchoPortNum)); 
+
+	dest.SetAddress(KDummyNifLocalAddressBase + 4);
+	dest.SetPort(KDummyNifCmdPort);
+
+	buffer.SetMax();
+	buffer.FillZ();
+	buffer[0] = (TUint8) KForceDisconnect;
+
+	sock.SendTo(buffer, dest, 0, status);
+	User::WaitForRequest(status);
+	User::LeaveIfError(status.Int());
+
+	buffer.Zero();
+	// I expect some sort of response
+	// this fails - possibly ok as the interface might have gone already??
+	//sock.RecvFrom(buffer, dest, 0, status);
+	//User::WaitForRequest(status);
+	//TESTEL(KErrNone == status.Int(), status.Int());
+
+	CleanupStack::PopAndDestroy(&sock);
+
+	return KErrNone;
+}
+
+/**
+   Bring up a snap with two bearers, both on.
+   Kill the top priority.
+   Accept the migration.
+   Reject the new carrier.
+   Verify that the new carrier has gone away.
+   The new carrier should go away because of the short idle timer. The bearers in this test have only short idle timer to verify.
+
+   This test verifies DEF143172
+*/   
+enum TVerdict CBearerMobilityTestStep_761404::doTestStepL()
+	{
+	const TInt KTestSnap = 20;
+	const TInt KPriority1BearerAP = 7;
+	const TInt KPriority2BearerAP = 8;
+
+	TInt error;
+	TInterfaceNotificationBuf info1;
+	TNifProgress progress;
+	TNifProgressBuf progbuf(progress);
+	TBuf8<KNotificationEventMaxSize> eventnotbuf;
+	TRequestStatus status1, status2, status3;
+	
+	RSocketServ ss;
+	RConnection connS, connAIN;
+	RCommsMobilityApiExt mobility;
+	TConnSnapPref p;
+	p.SetSnap(KTestSnap);
+
+	INFO_PRINTF1(_L("Description: "));
+	INFO_PRINTF1(_L("Bring up a snap with two bearers, both on."));
+   	INFO_PRINTF1(_L("Kill the top priority."));
+	INFO_PRINTF1(_L("Accept the migration."));
+	INFO_PRINTF1(_L("Reject the new carrier."));
+	INFO_PRINTF1(_L("Verify that the new carrier has goes away."));
+   	INFO_PRINTF1(_L("The new carrier should go away because of the short idle timer. The bearers in this test have only short idle timer to verify."));
+	INFO_PRINTF1(_L("============================================================================="));
+	
+	// Set both bearer to be up
+	RProperty a1;
+	error = a1.Define(KAvailabilityTestingPubSubUid, KPriority1BearerAP, RProperty::EInt);
+	if((error == KErrAlreadyExists) || (error == KErrNone))
+		{
+		error = a1.Attach(KAvailabilityTestingPubSubUid, KPriority1BearerAP);
+		ASSERT(error == KErrNone);
+		
+		a1.Set(ESock::TAvailabilityStatus::EMaxAvailabilityScore);
+		}
+	
+	RProperty a2;
+	error = a2.Define(KAvailabilityTestingPubSubUid, KPriority1BearerAP, RProperty::EInt);
+	if((error == KErrAlreadyExists) || (error == KErrNone))
+		{
+		error = a2.Attach(KAvailabilityTestingPubSubUid, KPriority1BearerAP);
+		ASSERT(error == KErrNone);
+		
+		a2.Set(ESock::TAvailabilityStatus::EMaxAvailabilityScore);
+		}
+
+	// Open session and subsessions
+	User::LeaveIfError(ss.Connect());
+	CleanupClosePushL(ss);
+
+	User::LeaveIfError(connAIN.Open(ss));
+	CleanupClosePushL(connAIN);
+
+	User::LeaveIfError(connS.Open(ss));
+	CleanupClosePushL(connS);
+
+	// Register for notification of connections going up/down
+	INFO_PRINTF1(_L("Register for notification of connections going up/down"));
+	connAIN.AllInterfaceNotification(info1, status1);
+
+	// Start the connection
+	INFO_PRINTF2(_L("Start connection (%d)"), p.Snap());
+	User::LeaveIfError(connS.Start(p));
+
+	// Check all interface notification
+	User::WaitForRequest(status1);
+	INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+	TESTL(info1().iConnectionInfo.iIapId == KPriority1BearerAP && info1().iState == 0);
+
+	// Register for notification again
+	connAIN.AllInterfaceNotification(info1, status1);
+
+	// Check the current progress
+	error = connS.Progress(progress);
+	INFO_PRINTF3(_L("Current progress iStage(%d) iError(%d)"), progress.iStage, progress.iError);
+	TESTL(error == KErrNone);
+	TESTL(progress.iStage == KLinkLayerOpen && progress.iError == KErrNone);
+
+	// open mobility
+	INFO_PRINTF1(_L("Open mobility on connection"));
+	error = mobility.Open(connS);
+	TESTL(error == KErrNone);
+	CleanupClosePushL(mobility);
+
+	// register for mobility notification
+	eventnotbuf.Zero();
+	INFO_PRINTF1(_L("Register for notification"));
+	mobility.RegisterForMobilityNotification(eventnotbuf, status2);
+
+	// Turn first priority off
+	INFO_PRINTF1(_L("Turn off highest priority bearer"));
+	a1.Set(ESock::TAvailabilityStatus::EMinAvailabilityScore);
+	RequestInterfaceDownL(connS, ss);
+	
+	// wait for all interface notification to report bearer down
+	User::WaitForRequest(status1);
+	INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+	TESTL(info1().iConnectionInfo.iIapId == KPriority1BearerAP && info1().iState == 1);
+	
+	// register for all interface notification again
+	connAIN.AllInterfaceNotification(info1, status1);
+
+	// wait for mobility notification
+	User::WaitForRequest(status2);	
+	CCommsApiExtRespMsg * msg = CCommsApiExtRespMsg::NewL(eventnotbuf);
+	CleanupStack::PushL(msg);
+	
+	ESock::CPreferredCarrierAvailable* pca = static_cast<ESock::CPreferredCarrierAvailable*>(msg);
+	INFO_PRINTF3(_L("Preferred carrier available NewAP(%d) OldAP(%d)"), pca->NewAPInfo().AccessPoint(), pca->OldAPInfo().AccessPoint());
+	TESTL(KPriority2BearerAP == pca->NewAPInfo().AccessPoint() && KPriority1BearerAP ==  pca->OldAPInfo().AccessPoint());
+
+	// register for mobility and migrate
+	mobility.RegisterForMobilityNotification(eventnotbuf, status2);
+	INFO_PRINTF1(_L("Migrate to preferred carrier"));
+	mobility.MigrateToPreferredCarrier();
+
+	// check that the expected bearer has come up
+	User::WaitForRequest(status1);
+	INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+	TESTEL(info1().iConnectionInfo.iIapId == KPriority2BearerAP && info1().iState == 0, KErrCorrupt);
+
+	// register for it again
+	connAIN.AllInterfaceNotification(info1, status1);
+
+	// register for progress notification, for KLinkLayerClosed.
+	connS.ProgressNotification(progbuf, status3, KLinkLayerClosed);
+
+	// wait for new carrier active
+	User::WaitForRequest(status2);
+	
+	CleanupStack::PopAndDestroy(msg);
+	// verify the new carrier is as expected and then reject it
+	msg = CCommsApiExtRespMsg::NewL(eventnotbuf);
+	CleanupStack::PushL(msg);
+	ESock::CNewCarrierActive* nca = static_cast<ESock::CNewCarrierActive*>(msg);
+	INFO_PRINTF2(_L("NewCarrierActive NewAP(%d)"), nca->NewAPInfo().AccessPoint());
+	TESTL(nca->NewAPInfo().AccessPoint() == KPriority2BearerAP);
+	CleanupStack::PopAndDestroy(msg);
+
+	INFO_PRINTF1(_L("Reject new carrier"));
+	mobility.NewCarrierRejected();
+
+	// wait for all interface notification to tell us connection has gone down.
+	User::WaitForRequest(status1);
+	INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+	TESTL(info1().iConnectionInfo.iIapId == KPriority2BearerAP && info1().iState == 1);
+
+	User::WaitForRequest(status3);
+	INFO_PRINTF3(_L("Progress notification received iStage(%d) iError(%d)"), progbuf().iStage, progbuf().iError);
+	TESTL(progbuf().iStage == KLinkLayerClosed);
+
+	CleanupStack::PopAndDestroy(&mobility);
+	CleanupStack::PopAndDestroy(&connS);
+	CleanupStack::PopAndDestroy(&connAIN);
+	CleanupStack::PopAndDestroy(&ss);
+	
+	return EPass;
+	}
+
+/**
+   Bring up a snap with three bearers, all on.
+   Kill the top priority.
+   Accept the migration.
+   Reject the new carrier.
+   Verify that the new carrier has gone away.
+   Get offered the third priority.
+   Accept third priority
+   Verify KLinkLayerClosed is never received.
+
+   This test verifies DEF143172
+*/
+enum TVerdict CBearerMobilityTestStep_761405::doTestStepL()
+	{
+	const TInt KTestSnap = 23;
+	const TInt KPriority1BearerAP = 7;
+	const TInt KPriority2BearerAP = 8;
+	const TInt KPriority3BearerAP = 4;
+
+	TInt error;
+	TInterfaceNotificationBuf info1;
+	TNifProgress progress;
+	TNifProgressBuf progbuf(progress);
+	TBuf8<KNotificationEventMaxSize> eventnotbuf;
+	TRequestStatus status1, status2, status3;
+	
+	RSocketServ ss;
+	RConnection connS, connAIN;
+	RCommsMobilityApiExt mobility;
+	TConnSnapPref p;
+	p.SetSnap(KTestSnap);
+
+	INFO_PRINTF1(_L("Description: "));
+	INFO_PRINTF1(_L("Bring up a snap with three bearers, all on."));
+   	INFO_PRINTF1(_L("Kill the top priority."));
+	INFO_PRINTF1(_L("Accept the migration."));
+	INFO_PRINTF1(_L("Reject the new carrier."));
+	INFO_PRINTF1(_L("Verify that the new carrier has goes away."));
+	INFO_PRINTF1(_L("Accept the migration to the third priority."));
+	INFO_PRINTF1(_L("Accept the new carrier."));
+   	INFO_PRINTF1(_L("The new carrier should go away because of the short idle timer. The bearers in this test have only short idle timer to verify."));
+	INFO_PRINTF1(_L("============================================================================="));
+	
+	// Set both bearer to be up
+	RProperty a1;
+	error = a1.Define(KAvailabilityTestingPubSubUid, KPriority1BearerAP, RProperty::EInt);
+	if((error == KErrAlreadyExists) || (error == KErrNone))
+		{
+		error = a1.Attach(KAvailabilityTestingPubSubUid, KPriority1BearerAP);
+		ASSERT(error == KErrNone);
+		
+		a1.Set(ESock::TAvailabilityStatus::EMaxAvailabilityScore);
+		}
+	
+	RProperty a2;
+	error = a2.Define(KAvailabilityTestingPubSubUid, KPriority1BearerAP, RProperty::EInt);
+	if((error == KErrAlreadyExists) || (error == KErrNone))
+		{
+		error = a2.Attach(KAvailabilityTestingPubSubUid, KPriority1BearerAP);
+		ASSERT(error == KErrNone);
+		
+		a2.Set(ESock::TAvailabilityStatus::EMaxAvailabilityScore);
+		}
+
+	RProperty a3;
+	error = a3.Define(KAvailabilityTestingPubSubUid, KPriority3BearerAP, RProperty::EInt);
+	if((error == KErrAlreadyExists) || (error == KErrNone))
+		{
+		error = a3.Attach(KAvailabilityTestingPubSubUid, KPriority3BearerAP);
+		ASSERT(error == KErrNone);
+		
+		a3.Set(ESock::TAvailabilityStatus::EMaxAvailabilityScore);
+		}
+	
+	// Open session and subsessions
+	User::LeaveIfError(ss.Connect());
+	CleanupClosePushL(ss);
+
+	User::LeaveIfError(connAIN.Open(ss));
+	CleanupClosePushL(connAIN);
+
+	User::LeaveIfError(connS.Open(ss));
+	CleanupClosePushL(connS);
+
+	// Register for notification of connections going up/down
+	INFO_PRINTF1(_L("Register for notification of connections going up/down"));
+	connAIN.AllInterfaceNotification(info1, status1);
+
+	// Start the connection
+	INFO_PRINTF2(_L("Start connection (%d)"), p.Snap());
+	User::LeaveIfError(connS.Start(p));
+
+	// Check all interface notification
+	User::WaitForRequest(status1);
+	INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+	TESTL(info1().iConnectionInfo.iIapId == KPriority1BearerAP && info1().iState == 0);
+
+	// Register for notification again
+	connAIN.AllInterfaceNotification(info1, status1);
+
+	// Check the current progress
+	error = connS.Progress(progress);
+	INFO_PRINTF3(_L("Current progress iStage(%d) iError(%d)"), progress.iStage, progress.iError);
+	TESTL(error == KErrNone);
+	TESTL(progress.iStage == KLinkLayerOpen && progress.iError == KErrNone);
+
+	// open mobility
+	INFO_PRINTF1(_L("Open mobility on connection"));
+	error = mobility.Open(connS);
+	TESTL(error == KErrNone);
+	CleanupClosePushL(mobility);
+
+	// register for mobility notification
+	eventnotbuf.Zero();
+	INFO_PRINTF1(_L("Register for notification"));
+	mobility.RegisterForMobilityNotification(eventnotbuf, status2);
+
+	// Turn first priority off
+	INFO_PRINTF1(_L("Turn off highest priority bearer"));
+	a1.Set(ESock::TAvailabilityStatus::EMinAvailabilityScore);
+	RequestInterfaceDownL(connS, ss);
+	
+	// wait for all interface notification to report bearer down
+	User::WaitForRequest(status1);
+	INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+	TESTL(info1().iConnectionInfo.iIapId == KPriority1BearerAP && info1().iState == 1);
+	
+	// register for all interface notification again
+	connAIN.AllInterfaceNotification(info1, status1);
+
+	// wait for mobility notification
+	User::WaitForRequest(status2);	
+	CCommsApiExtRespMsg * msg = CCommsApiExtRespMsg::NewL(eventnotbuf);
+	CleanupStack::PushL(msg);
+	
+	ESock::CPreferredCarrierAvailable* pca = static_cast<ESock::CPreferredCarrierAvailable*>(msg);
+	INFO_PRINTF3(_L("Preferred carrier available NewAP(%d) OldAP(%d)"), pca->NewAPInfo().AccessPoint(), pca->OldAPInfo().AccessPoint());
+	TESTL(KPriority2BearerAP == pca->NewAPInfo().AccessPoint() && KPriority1BearerAP ==  pca->OldAPInfo().AccessPoint());
+
+	// register for mobility and migrate
+	mobility.RegisterForMobilityNotification(eventnotbuf, status2);
+	INFO_PRINTF1(_L("Migrate to preferred carrier"));
+	mobility.MigrateToPreferredCarrier();
+
+	// check that the expected bearer has come up
+	User::WaitForRequest(status1);
+	INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+	TESTEL(info1().iConnectionInfo.iIapId == KPriority2BearerAP && info1().iState == 0, KErrCorrupt);
+
+	// register for it again
+	connAIN.AllInterfaceNotification(info1, status1);
+
+	// register for progress notification, for KLinkLayerClosed.
+	connS.ProgressNotification(progbuf, status3, KLinkLayerClosed);
+
+	// wait for new carrier active
+	User::WaitForRequest(status2);
+	
+	CleanupStack::PopAndDestroy(msg);
+	// verify the new carrier is as expected and then reject it
+	msg = CCommsApiExtRespMsg::NewL(eventnotbuf);
+	CleanupStack::PushL(msg);
+	ESock::CNewCarrierActive* nca = static_cast<ESock::CNewCarrierActive*>(msg);
+	INFO_PRINTF2(_L("NewCarrierActive NewAP(%d)"), nca->NewAPInfo().AccessPoint());
+	TESTL(nca->NewAPInfo().AccessPoint() == KPriority2BearerAP);
+	CleanupStack::PopAndDestroy(msg);
+
+	mobility.RegisterForMobilityNotification(eventnotbuf, status2);
+	INFO_PRINTF1(_L("Reject new carrier"));
+	mobility.NewCarrierRejected();
+
+	// wait for mobility notification
+	User::WaitForRequest(status2);	
+	msg = CCommsApiExtRespMsg::NewL(eventnotbuf);
+	CleanupStack::PushL(msg);
+	
+	pca = static_cast<ESock::CPreferredCarrierAvailable*>(msg);
+	INFO_PRINTF3(_L("Preferred carrier available NewAP(%d) OldAP(%d)"), pca->NewAPInfo().AccessPoint(), pca->OldAPInfo().AccessPoint());
+	TESTL(KPriority3BearerAP == pca->NewAPInfo().AccessPoint() && KPriority2BearerAP == pca->OldAPInfo().AccessPoint());
+
+	// register for mobility and migrate
+	mobility.RegisterForMobilityNotification(eventnotbuf, status2);
+	INFO_PRINTF1(_L("Migrate to preferred carrier"));
+	mobility.MigrateToPreferredCarrier();
+
+	// check that the expected bearer has come up
+	User::WaitForRequest(status1);
+	INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+	TESTL(info1().iConnectionInfo.iIapId == KPriority3BearerAP && info1().iState == 0);
+	
+	connAIN.AllInterfaceNotification(info1, status1);
+
+	// wait for all interface notification to tell us connection has gone down.
+	User::WaitForRequest(status1);
+	INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+	TESTL(info1().iConnectionInfo.iIapId == KPriority2BearerAP && info1().iState == 1);
+
+	CleanupStack::PopAndDestroy(msg);
+	// verify the new carrier is as expected and then reject it
+	msg = CCommsApiExtRespMsg::NewL(eventnotbuf);
+	CleanupStack::PushL(msg);
+	nca = static_cast<ESock::CNewCarrierActive*>(msg);
+	INFO_PRINTF2(_L("NewCarrierActive NewAP(%d)"), nca->NewAPInfo().AccessPoint());
+	TESTL(nca->NewAPInfo().AccessPoint() == KPriority3BearerAP);
+	CleanupStack::PopAndDestroy(msg);
+
+	INFO_PRINTF1(_L("Accept migration"));
+	mobility.NewCarrierAccepted();
+
+	// Ensure we're never got KLinkLayerClosed
+	TESTL(status3.Int() == KRequestPending);
+	connS.CancelProgressNotification();
+	
+	CleanupStack::PopAndDestroy(&mobility);
+	CleanupStack::PopAndDestroy(&connS);
+	CleanupStack::PopAndDestroy(&connAIN);
+	CleanupStack::PopAndDestroy(&ss);
+	
+	return EPass;
+	}
--- a/datacommsserver/esockserver/test/TE_RConnection/src/te_BearerMobilityTestSuite.h	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnection/src/te_BearerMobilityTestSuite.h	Tue Jan 26 13:09:14 2010 +0200
@@ -101,6 +101,19 @@
 	enum TVerdict doTestStepL(void);
 	};
 
+class CBearerMobilityTestStep_761404 : public CTestStep
+	{
+public:
+	virtual ~CBearerMobilityTestStep_761404() {}
+	enum TVerdict doTestStepL(void);
+	};
+	
+class CBearerMobilityTestStep_761405 : public CTestStep
+	{
+public:
+	virtual ~CBearerMobilityTestStep_761405() {}
+	enum TVerdict doTestStepL(void);
+	};
 
 #endif /* TE_BEARERMOBILITYTESTSUITE_H */
 
Binary file datacommsserver/esockserver/test/TE_RConnectionServ/documentation/RConnectionServ API test specification.doc has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/config/def143083.xml	Tue Jan 26 13:09:14 2010 +0200
@@ -0,0 +1,1249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+ All rights reserved.
+ This component and the accompanying materials are made available
+ under the terms of the License "Symbian Foundation License v1.0"
+ which accompanies this distribution, and is available
+ at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+
+ Initial Contributors:
+ Nokia Corporation - initial contribution.
+
+ Contributors:
+
+ Description:
+ CommDB Settings File
+ All Rights Reserved
+
+-->
+
+
+
+<CommDB:Config xmlns="SymbianOS.Generic.Comms-Infras.CommDB"
+               xmlns:CommDB="SymbianOS.Generic.Comms-Infras.CommDB"
+               xmlns:xlink="http://www.w3.org/1999/xlink"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xsi:schemaLocation="SymbianOS.Generic.Comms-Infras.CommDB CommDB.xsd">
+
+<InformationTable>
+</InformationTable>
+
+<NetworkTable>
+    <Network operation="add">
+        <Name>NT RAS</Name>
+    </Network>
+    <Network operation="add">
+        <Name>Linux</Name>
+    </Network>
+    <Network operation="add">
+        <Name>Dummy</Name>
+    </Network>
+    <Network operation="add">
+        <Name>Hungry</Name>
+    </Network>
+    <Network operation="add">
+        <Name>Dummy (Long Timeout)</Name>
+    </Network>
+    <Network operation="add">
+        <Name>Hungry (Long Timeout)</Name>
+    </Network>
+</NetworkTable>
+
+<IAPTable>
+    <IAP operation="add">
+        <Name>Hungry</Name>
+        <IAPService>DialOutISP.Dummy</IAPService>
+        <IAPBearer>ModemBearer.Hungry</IAPBearer>
+        <IAPNetwork>Network.Hungry</IAPNetwork>
+        <IAPNetworkWeighting>0</IAPNetworkWeighting>
+        <LocationRef>Location.Office Direct Dial</LocationRef>
+    </IAP>
+    <IAP operation="add">
+        <Name>NTRas GPRS</Name>
+        <IAPService>OutgoingGPRS.NTRas GPRS</IAPService>
+        <IAPBearer>ModemBearer.Hungry (Long Timeout)</IAPBearer>
+        <IAPNetwork>Network.NT RAS</IAPNetwork>
+        <IAPNetworkWeighting>0</IAPNetworkWeighting>
+        <LocationRef>Location.Mobile</LocationRef>
+    </IAP>
+    <IAP operation="add">
+        <Name>Additional Dial In ISP</Name>
+        <IAPService>DialInISP.Dial In CS ISP</IAPService>
+        <IAPBearer>ModemBearer.Linux</IAPBearer>
+        <IAPNetwork>Network.NT RAS</IAPNetwork>
+        <IAPNetworkWeighting>0</IAPNetworkWeighting>
+        <LocationRef>Location.Home</LocationRef>
+    </IAP>
+    <IAP operation="add">
+        <Name>Default Dial In ISP</Name>
+        <IAPService>DialInISP.Dial In CS ISP</IAPService>
+        <IAPBearer>ModemBearer.Linux</IAPBearer>
+        <IAPNetwork>Network.NT RAS</IAPNetwork>
+        <IAPNetworkWeighting>0</IAPNetworkWeighting>
+        <LocationRef>Location.Home</LocationRef>
+    </IAP>
+    <IAP operation="add">
+        <Name>Linux</Name>
+        <IAPService>DialOutISP.Linux</IAPService>
+        <IAPBearer>ModemBearer.Linux</IAPBearer>
+        <IAPNetwork>Network.Linux</IAPNetwork>
+        <IAPNetworkWeighting>0</IAPNetworkWeighting>
+        <LocationRef>Location.Office Direct Dial</LocationRef>
+    </IAP>
+    <IAP operation="add">
+        <Name>Dummy</Name>
+        <IAPService>DialOutISP.Dummy</IAPService>
+        <IAPBearer>ModemBearer.Dummy</IAPBearer>
+        <IAPNetwork>Network.Dummy</IAPNetwork>
+        <IAPNetworkWeighting>0</IAPNetworkWeighting>
+        <LocationRef>Location.Office Direct Dial</LocationRef>
+    </IAP>
+    <IAP operation="add">
+        <Name>Actual NT RAS</Name>
+        <IAPService>DialOutISP.NT RAS</IAPService>
+        <IAPBearer>ModemBearer.Null Modem 115200bps</IAPBearer>
+        <IAPNetwork>Network.NT RAS</IAPNetwork>
+        <IAPNetworkWeighting>0</IAPNetworkWeighting>
+        <LocationRef>Location.Office</LocationRef>
+    </IAP>
+    <IAP operation="add">
+        <Name>Virtual Comm port</Name>
+        <IAPService>DialOutISP.Linux</IAPService>
+        <IAPBearer>ModemBearer.Null Modem 115200bps</IAPBearer>
+        <IAPNetwork>Network.Linux</IAPNetwork>
+        <IAPNetworkWeighting>0</IAPNetworkWeighting>
+        <LocationRef>Location.Office</LocationRef>
+    </IAP>
+    <IAP operation="add">
+        <Name>Bad NT RAS</Name>
+        <IAPService>DialOutISP.Bad NT RAS</IAPService>
+        <IAPBearer>ModemBearer.Null Modem 115200bps</IAPBearer>
+        <IAPNetwork>Network.NT RAS</IAPNetwork>
+        <IAPNetworkWeighting>0</IAPNetworkWeighting>
+        <LocationRef>Location.Office</LocationRef>
+    </IAP>
+    <IAP operation="add">
+        <Name>Dummy (Long Timeout)</Name>
+        <IAPService>DialOutISP.Dummy</IAPService>
+        <IAPBearer>ModemBearer.Dummy (Long Timeout)</IAPBearer>
+        <IAPNetwork>Network.Dummy (Long Timeout)</IAPNetwork>
+        <IAPNetworkWeighting>0</IAPNetworkWeighting>
+        <LocationRef>Location.Office</LocationRef>
+    </IAP>
+    <IAP operation="add">
+        <Name>Hungry (Long Timeout)</Name>
+        <IAPService>DialOutISP.Dummy</IAPService>
+        <IAPBearer>ModemBearer.Hungry (Long Timeout)</IAPBearer>
+        <IAPNetwork>Network.Hungry (Long Timeout)</IAPNetwork>
+        <IAPNetworkWeighting>0</IAPNetworkWeighting>
+        <LocationRef>Location.Office</LocationRef>
+    </IAP>
+    <IAP operation="add">
+        <Name>QoS Test Nif</Name>
+        <IAPService>DialOutISP.NT RAS</IAPService>
+        <IAPBearer>ModemBearer.QoS Test Bearer</IAPBearer>
+        <IAPNetwork>Network.Hungry (Long Timeout)</IAPNetwork>
+        <IAPNetworkWeighting>0</IAPNetworkWeighting>
+        <LocationRef>Location.Office</LocationRef>
+    </IAP>
+</IAPTable>
+
+<ModemBearerTable>
+    <ModemBearer operation="template">
+        <Name>Default Modem</Name>
+        <Agent>CSD.agt</Agent>
+        <IfName>PPP</IfName>
+        <PortName>COMM::0</PortName>
+        <TSYName>MM</TSYName>
+        <CSYName>ECUART</CSYName>
+        <DataBits>8</DataBits>
+        <StopBits>1</StopBits>
+        <Parity>NONE</Parity>
+        <Rate>115200</Rate>
+        <Handshaking>0</Handshaking>
+        <SpecialRate>0</SpecialRate>
+        <XonChar>0</XonChar>
+        <XoffChar>0</XoffChar>
+        <FaxClassPref>AUTO</FaxClassPref>
+        <SpeakerPref>AFTERDIALUNTILANSWER</SpeakerPref>
+        <ModemInitString>AT</ModemInitString>
+        <DataInitString>AT</DataInitString>
+        <FaxInitString>AT</FaxInitString>
+        <DialPauseLength>S8=</DialPauseLength>
+        <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+        <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+        <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+        <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+        <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+        <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+        <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+        <DialToneWaitModifier>W</DialToneWaitModifier>
+        <CallProgress1>X1</CallProgress1>
+        <CallProgress2>X2</CallProgress2>
+        <CallProgress3>X3</CallProgress3>
+        <CallProgress4>X4</CallProgress4>
+        <EchoOff>E0</EchoOff>
+        <VerboseText>V1</VerboseText>
+        <QuietOff>Q0</QuietOff>
+        <QuietOn>Q1</QuietOn>
+        <DialCommandStateModifier>;</DialCommandStateModifier>
+        <OnLine>O</OnLine>
+        <ResetConfiguration>Z</ResetConfiguration>
+        <ReturnToFactoryDefs>&amp;F</ReturnToFactoryDefs>
+        <DCDOnDuringLink>&amp;C1</DCDOnDuringLink>
+        <DTRHangUp>&amp;D2</DTRHangUp>
+        <DSRAlwaysOn>&amp;S0</DSRAlwaysOn>
+        <RTSCTSHandshake>&amp;K3</RTSCTSHandshake>
+        <XonXoffHandshake>&amp;K4</XonXoffHandshake>
+        <EscapeCharacter>+</EscapeCharacter>
+        <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+        <NoDialTone>NO DIAL TONE</NoDialTone>
+        <Busy>BUSY</Busy>
+        <NoAnswer>NO ANSWER</NoAnswer>
+        <Carrier>CARRIER</Carrier>
+        <Connect>CONNECT</Connect>
+        <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+        <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+        <CompressionNone>COMPRESSION:NONE</CompressionNone>
+        <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+        <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+        <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+        <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+        <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+        <LastSessionClosedTimeout>8</LastSessionClosedTimeout>
+        <LastSocketClosedTimeout>10</LastSocketClosedTimeout>
+    </ModemBearer>
+    <ModemBearer operation="add">
+        <Name>Null Modem 115200bps</Name>
+        <Agent>csd.agt</Agent>
+        <IfName>ppp</IfName>
+        <PortName>COMM::0</PortName>
+        <TSYName>NTRASTSY</TSYName>
+        <CSYName>ECUART</CSYName>
+        <DataBits>8</DataBits>
+        <StopBits>1</StopBits>
+        <Parity>NONE</Parity>
+        <Rate>115200</Rate>
+        <Handshaking>4</Handshaking>
+        <SpecialRate>0</SpecialRate>
+        <XonChar>0</XonChar>
+        <XoffChar>0</XoffChar>
+        <FaxClassPref>AUTO</FaxClassPref>
+        <SpeakerPref>NEVER</SpeakerPref>
+        <SpeakerVolPref>QUIET</SpeakerVolPref>
+        <ModemInitString>AT</ModemInitString>
+        <DataInitString>AT</DataInitString>
+        <FaxInitString>AT</FaxInitString>
+        <DialPauseLength>S8=</DialPauseLength>
+        <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+        <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+        <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+        <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+        <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+        <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+        <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+        <DialToneWaitModifier>W</DialToneWaitModifier>
+        <CallProgress1>X1</CallProgress1>
+        <CallProgress2>X2</CallProgress2>
+        <CallProgress3>X3</CallProgress3>
+        <CallProgress4>X4</CallProgress4>
+        <EchoOff>E0</EchoOff>
+        <VerboseText>V1</VerboseText>
+        <QuietOff>Q0</QuietOff>
+        <QuietOn>Q1</QuietOn>
+        <DialCommandStateModifier>;</DialCommandStateModifier>
+        <OnLine>O</OnLine>
+        <ResetConfiguration>Z</ResetConfiguration>
+        <ReturnToFactoryDefs>&amp;F</ReturnToFactoryDefs>
+        <DCDOnDuringLink>&amp;C1</DCDOnDuringLink>
+        <DTRHangUp>&amp;D2</DTRHangUp>
+        <DSRAlwaysOn>&amp;S0</DSRAlwaysOn>
+        <RTSCTSHandshake>&amp;K3</RTSCTSHandshake>
+        <XonXoffHandshake>&amp;K4</XonXoffHandshake>
+        <EscapeCharacter>+</EscapeCharacter>
+        <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+        <NoDialTone>NO DIAL TONE</NoDialTone>
+        <Busy>BUSY</Busy>
+        <NoAnswer>NO ANSWER</NoAnswer>
+        <Carrier>CARRIER</Carrier>
+        <Connect>CONNECT</Connect>
+        <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+        <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+        <CompressionNone>COMPRESSION:NONE</CompressionNone>
+        <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+        <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+        <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+        <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+        <MessageValidityPeriod>0</MessageValidityPeriod>
+        <MessageDeliveryReport>FALSE</MessageDeliveryReport>
+        <MinimumSignalLevel>0</MinimumSignalLevel>
+        <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+        <LastSessionClosedTimeout>8</LastSessionClosedTimeout>
+        <LastSocketClosedTimeout>30</LastSocketClosedTimeout>
+    </ModemBearer>
+    <ModemBearer operation="add">
+        <Name>Linux</Name>
+        <Agent>CSD.agt</Agent>
+        <IfName>PPP</IfName>
+        <PortName>COMM::3</PortName>
+        <TSYName>NTRASTSY</TSYName>
+        <CSYName>ECUART</CSYName>
+        <DataBits>5</DataBits>
+        <StopBits>1</StopBits>
+        <Parity>NONE</Parity>
+        <Rate>115200</Rate>
+        <Handshaking>0</Handshaking>
+        <SpecialRate>0</SpecialRate>
+        <XonChar>0</XonChar>
+        <XoffChar>0</XoffChar>
+        <FaxClassPref>AUTO</FaxClassPref>
+        <SpeakerPref>NEVER</SpeakerPref>
+        <SpeakerVolPref>QUIET</SpeakerVolPref>
+        <ModemInitString>AT</ModemInitString>
+        <DataInitString>AT</DataInitString>
+        <FaxInitString>AT</FaxInitString>
+        <DialPauseLength>S8=</DialPauseLength>
+        <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+        <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+        <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+        <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+        <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+        <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+        <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+        <DialToneWaitModifier>W</DialToneWaitModifier>
+        <CallProgress1>X1</CallProgress1>
+        <CallProgress2>X2</CallProgress2>
+        <CallProgress3>X3</CallProgress3>
+        <CallProgress4>X4</CallProgress4>
+        <EchoOff>E0</EchoOff>
+        <VerboseText>V1</VerboseText>
+        <QuietOff>Q0</QuietOff>
+        <QuietOn>Q1</QuietOn>
+        <DialCommandStateModifier>;</DialCommandStateModifier>
+        <OnLine>O</OnLine>
+        <ResetConfiguration>Z</ResetConfiguration>
+        <ReturnToFactoryDefs>&amp;F</ReturnToFactoryDefs>
+        <DCDOnDuringLink>&amp;C1</DCDOnDuringLink>
+        <DTRHangUp>&amp;D2</DTRHangUp>
+        <DSRAlwaysOn>&amp;S0</DSRAlwaysOn>
+        <RTSCTSHandshake>&amp;K3</RTSCTSHandshake>
+        <XonXoffHandshake>&amp;K4</XonXoffHandshake>
+        <EscapeCharacter>+</EscapeCharacter>
+        <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+        <NoDialTone>NO DIAL TONE</NoDialTone>
+        <Busy>BUSY</Busy>
+        <NoAnswer>NO ANSWER</NoAnswer>
+        <Carrier>CARRIER</Carrier>
+        <Connect>CONNECT</Connect>
+        <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+        <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+        <CompressionNone>COMPRESSION:NONE</CompressionNone>
+        <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+        <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+        <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+        <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+        <MessageValidityPeriod>0</MessageValidityPeriod>
+        <MessageDeliveryReport>TRUE</MessageDeliveryReport>
+        <MinimumSignalLevel>0</MinimumSignalLevel>
+        <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+        <LastSessionClosedTimeout>8</LastSessionClosedTimeout>
+        <LastSocketClosedTimeout>10</LastSocketClosedTimeout>
+    </ModemBearer>
+    <ModemBearer operation="add">
+        <Name>Dummy</Name>
+        <Agent>NULLAGT.agt</Agent>
+        <IfName>dummynif</IfName>
+        <PortName>COMM::0</PortName>
+        <TSYName>NTRASTSY</TSYName>
+        <CSYName>ECUART</CSYName>
+        <DataBits>5</DataBits>
+        <StopBits>1</StopBits>
+        <Parity>NONE</Parity>
+        <Rate>115200</Rate>
+        <Handshaking>0</Handshaking>
+        <SpecialRate>0</SpecialRate>
+        <XonChar>0</XonChar>
+        <XoffChar>0</XoffChar>
+        <FaxClassPref>AUTO</FaxClassPref>
+        <SpeakerPref>NEVER</SpeakerPref>
+        <SpeakerVolPref>QUIET</SpeakerVolPref>
+        <ModemInitString>AT</ModemInitString>
+        <DataInitString>AT</DataInitString>
+        <FaxInitString>AT</FaxInitString>
+        <DialPauseLength>S8=</DialPauseLength>
+        <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+        <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+        <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+        <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+        <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+        <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+        <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+        <DialToneWaitModifier>W</DialToneWaitModifier>
+        <CallProgress1>X1</CallProgress1>
+        <CallProgress2>X2</CallProgress2>
+        <CallProgress3>X3</CallProgress3>
+        <CallProgress4>X4</CallProgress4>
+        <EchoOff>E0</EchoOff>
+        <VerboseText>V1</VerboseText>
+        <QuietOff>Q0</QuietOff>
+        <QuietOn>Q1</QuietOn>
+        <DialCommandStateModifier>;</DialCommandStateModifier>
+        <OnLine>O</OnLine>
+        <ResetConfiguration>Z</ResetConfiguration>
+        <ReturnToFactoryDefs>&amp;F</ReturnToFactoryDefs>
+        <DCDOnDuringLink>&amp;C1</DCDOnDuringLink>
+        <DTRHangUp>&amp;D2</DTRHangUp>
+        <DSRAlwaysOn>&amp;S0</DSRAlwaysOn>
+        <RTSCTSHandshake>&amp;K3</RTSCTSHandshake>
+        <XonXoffHandshake>&amp;K4</XonXoffHandshake>
+        <EscapeCharacter>+</EscapeCharacter>
+        <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+        <NoDialTone>NO DIAL TONE</NoDialTone>
+        <Busy>BUSY</Busy>
+        <NoAnswer>NO ANSWER</NoAnswer>
+        <Carrier>CARRIER</Carrier>
+        <Connect>CONNECT</Connect>
+        <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+        <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+        <CompressionNone>COMPRESSION:NONE</CompressionNone>
+        <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+        <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+        <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+        <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+        <MessageValidityPeriod>0</MessageValidityPeriod>
+        <MessageDeliveryReport>TRUE</MessageDeliveryReport>
+        <MinimumSignalLevel>0</MinimumSignalLevel>
+        <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+        <LastSessionClosedTimeout>5</LastSessionClosedTimeout>
+        <LastSocketClosedTimeout>10</LastSocketClosedTimeout>
+    </ModemBearer>
+    <ModemBearer operation="add">
+        <Name>Hungry</Name>
+        <Agent>NULLAGT.agt</Agent>
+        <IfName>hungrynif</IfName>
+        <PortName>COMM::0</PortName>
+        <TSYName>NTRASTSY</TSYName>
+        <CSYName>ECUART</CSYName>
+        <DataBits>5</DataBits>
+        <StopBits>1</StopBits>
+        <Parity>NONE</Parity>
+        <Rate>115200</Rate>
+        <Handshaking>0</Handshaking>
+        <SpecialRate>0</SpecialRate>
+        <XonChar>0</XonChar>
+        <XoffChar>0</XoffChar>
+        <FaxClassPref>AUTO</FaxClassPref>
+        <SpeakerPref>NEVER</SpeakerPref>
+        <SpeakerVolPref>QUIET</SpeakerVolPref>
+        <ModemInitString>AT</ModemInitString>
+        <DataInitString>AT</DataInitString>
+        <FaxInitString>AT</FaxInitString>
+        <DialPauseLength>S8=</DialPauseLength>
+        <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+        <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+        <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+        <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+        <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+        <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+        <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+        <DialToneWaitModifier>W</DialToneWaitModifier>
+        <CallProgress1>X1</CallProgress1>
+        <CallProgress2>X2</CallProgress2>
+        <CallProgress3>X3</CallProgress3>
+        <CallProgress4>X4</CallProgress4>
+        <EchoOff>E0</EchoOff>
+        <VerboseText>V1</VerboseText>
+        <QuietOff>Q0</QuietOff>
+        <QuietOn>Q1</QuietOn>
+        <DialCommandStateModifier>;</DialCommandStateModifier>
+        <OnLine>O</OnLine>
+        <ResetConfiguration>Z</ResetConfiguration>
+        <ReturnToFactoryDefs>&amp;F</ReturnToFactoryDefs>
+        <DCDOnDuringLink>&amp;C1</DCDOnDuringLink>
+        <DTRHangUp>&amp;D2</DTRHangUp>
+        <DSRAlwaysOn>&amp;S0</DSRAlwaysOn>
+        <RTSCTSHandshake>&amp;K3</RTSCTSHandshake>
+        <XonXoffHandshake>&amp;K4</XonXoffHandshake>
+        <EscapeCharacter>+</EscapeCharacter>
+        <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+        <NoDialTone>NO DIAL TONE</NoDialTone>
+        <Busy>BUSY</Busy>
+        <NoAnswer>NO ANSWER</NoAnswer>
+        <Carrier>CARRIER</Carrier>
+        <Connect>CONNECT</Connect>
+        <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+        <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+        <CompressionNone>COMPRESSION:NONE</CompressionNone>
+        <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+        <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+        <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+        <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+        <MessageValidityPeriod>0</MessageValidityPeriod>
+        <MessageDeliveryReport>TRUE</MessageDeliveryReport>
+        <MinimumSignalLevel>0</MinimumSignalLevel>
+        <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+        <LastSessionClosedTimeout>8</LastSessionClosedTimeout>
+        <LastSocketClosedTimeout>30</LastSocketClosedTimeout>
+    </ModemBearer>
+    <ModemBearer operation="add">
+        <Name>Dummy (Long Timeout)</Name>
+        <Agent>NULLAGT.agt</Agent>
+        <IfName>dummynif</IfName>
+        <PortName>COMM::0</PortName>
+        <TSYName>MM</TSYName>
+        <CSYName>ECUART</CSYName>
+        <DataBits>8</DataBits>
+        <StopBits>1</StopBits>
+        <Parity>NONE</Parity>
+        <Rate>115200</Rate>
+        <Handshaking>0</Handshaking>
+        <SpecialRate>0</SpecialRate>
+        <XonChar>0</XonChar>
+        <XoffChar>0</XoffChar>
+        <FaxClassPref>AUTO</FaxClassPref>
+        <SpeakerPref>NEVER</SpeakerPref>
+        <SpeakerVolPref>QUIET</SpeakerVolPref>
+        <ModemInitString>AT</ModemInitString>
+        <DataInitString>AT</DataInitString>
+        <FaxInitString>AT</FaxInitString>
+        <DialPauseLength>S8=</DialPauseLength>
+        <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+        <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+        <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+        <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+        <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+        <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+        <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+        <DialToneWaitModifier>W</DialToneWaitModifier>
+        <CallProgress1>X1</CallProgress1>
+        <CallProgress2>X2</CallProgress2>
+        <CallProgress3>X3</CallProgress3>
+        <CallProgress4>X4</CallProgress4>
+        <EchoOff>E0</EchoOff>
+        <VerboseText>V1</VerboseText>
+        <QuietOff>Q0</QuietOff>
+        <QuietOn>Q1</QuietOn>
+        <DialCommandStateModifier>;</DialCommandStateModifier>
+        <OnLine>O</OnLine>
+        <ResetConfiguration>Z</ResetConfiguration>
+        <ReturnToFactoryDefs>&amp;F</ReturnToFactoryDefs>
+        <DCDOnDuringLink>&amp;C1</DCDOnDuringLink>
+        <DTRHangUp>&amp;D2</DTRHangUp>
+        <DSRAlwaysOn>&amp;S0</DSRAlwaysOn>
+        <RTSCTSHandshake>&amp;K3</RTSCTSHandshake>
+        <XonXoffHandshake>&amp;K4</XonXoffHandshake>
+        <EscapeCharacter>+</EscapeCharacter>
+        <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+        <NoDialTone>NO DIAL TONE</NoDialTone>
+        <Busy>BUSY</Busy>
+        <NoAnswer>NO ANSWER</NoAnswer>
+        <Carrier>CARRIER</Carrier>
+        <Connect>CONNECT</Connect>
+        <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+        <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+        <CompressionNone>COMPRESSION:NONE</CompressionNone>
+        <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+        <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+        <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+        <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+        <MessageValidityPeriod>0</MessageValidityPeriod>
+        <MessageDeliveryReport>TRUE</MessageDeliveryReport>
+        <MinimumSignalLevel>0</MinimumSignalLevel>
+        <LastSocketActivityTimeout>14</LastSocketActivityTimeout>
+        <LastSessionClosedTimeout>6</LastSessionClosedTimeout>
+        <LastSocketClosedTimeout>10</LastSocketClosedTimeout>
+    </ModemBearer>
+    <ModemBearer operation="add">
+        <Name>Hungry (Long Timeout)</Name>
+        <Agent>NULLAGT.agt</Agent>
+        <IfName>hungrynif</IfName>
+        <PortName>COMM::0</PortName>
+        <TSYName>MM</TSYName>
+        <CSYName>ECUART</CSYName>
+        <DataBits>8</DataBits>
+        <StopBits>1</StopBits>
+        <Parity>NONE</Parity>
+        <Rate>115200</Rate>
+        <Handshaking>0</Handshaking>
+        <SpecialRate>0</SpecialRate>
+        <XonChar>0</XonChar>
+        <XoffChar>0</XoffChar>
+        <FaxClassPref>AUTO</FaxClassPref>
+        <SpeakerPref>NEVER</SpeakerPref>
+        <SpeakerVolPref>QUIET</SpeakerVolPref>
+        <ModemInitString>AT</ModemInitString>
+        <DataInitString>AT</DataInitString>
+        <FaxInitString>AT</FaxInitString>
+        <DialPauseLength>S8=</DialPauseLength>
+        <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+        <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+        <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+        <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+        <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+        <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+        <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+        <DialToneWaitModifier>W</DialToneWaitModifier>
+        <CallProgress1>X1</CallProgress1>
+        <CallProgress2>X2</CallProgress2>
+        <CallProgress3>X3</CallProgress3>
+        <CallProgress4>X4</CallProgress4>
+        <EchoOff>E0</EchoOff>
+        <VerboseText>V1</VerboseText>
+        <QuietOff>Q0</QuietOff>
+        <QuietOn>Q1</QuietOn>
+        <DialCommandStateModifier>;</DialCommandStateModifier>
+        <OnLine>O</OnLine>
+        <ResetConfiguration>Z</ResetConfiguration>
+        <ReturnToFactoryDefs>&amp;F</ReturnToFactoryDefs>
+        <DCDOnDuringLink>&amp;C1</DCDOnDuringLink>
+        <DTRHangUp>&amp;D2</DTRHangUp>
+        <DSRAlwaysOn>&amp;S0</DSRAlwaysOn>
+        <RTSCTSHandshake>&amp;K3</RTSCTSHandshake>
+        <XonXoffHandshake>&amp;K4</XonXoffHandshake>
+        <EscapeCharacter>+</EscapeCharacter>
+        <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+        <NoDialTone>NO DIAL TONE</NoDialTone>
+        <Busy>BUSY</Busy>
+        <NoAnswer>NO ANSWER</NoAnswer>
+        <Carrier>CARRIER</Carrier>
+        <Connect>CONNECT</Connect>
+        <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+        <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+        <CompressionNone>COMPRESSION:NONE</CompressionNone>
+        <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+        <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+        <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+        <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+        <MessageValidityPeriod>0</MessageValidityPeriod>
+        <MessageDeliveryReport>TRUE</MessageDeliveryReport>
+        <MinimumSignalLevel>0</MinimumSignalLevel>
+        <LastSocketActivityTimeout>16</LastSocketActivityTimeout>
+        <LastSessionClosedTimeout>8</LastSessionClosedTimeout>
+        <LastSocketClosedTimeout>12</LastSocketClosedTimeout>
+    </ModemBearer>
+    <ModemBearer operation="add">
+        <Name>QoS Test Bearer</Name>
+        <Agent>CSD.agt</Agent>
+        <IfName>QoSPPP</IfName>
+        <PortName>COMM::0</PortName>
+        <TSYName>NTRASTSY</TSYName>
+        <CSYName>ECUART</CSYName>
+        <DataBits>8</DataBits>
+        <StopBits>1</StopBits>
+        <Parity>NONE</Parity>
+        <Rate>115200</Rate>
+        <Handshaking>4</Handshaking>
+        <SpecialRate>0</SpecialRate>
+        <XonChar>0</XonChar>
+        <XoffChar>0</XoffChar>
+        <FaxClassPref>AUTO</FaxClassPref>
+        <SpeakerPref>NEVER</SpeakerPref>
+        <SpeakerVolPref>QUIET</SpeakerVolPref>
+        <ModemInitString>AT</ModemInitString>
+        <DataInitString>AT</DataInitString>
+        <FaxInitString>AT</FaxInitString>
+        <DialPauseLength>S8=</DialPauseLength>
+        <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+        <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+        <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+        <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+        <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+        <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+        <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+        <DialToneWaitModifier>W</DialToneWaitModifier>
+        <CallProgress1>X1</CallProgress1>
+        <CallProgress2>X2</CallProgress2>
+        <CallProgress3>X3</CallProgress3>
+        <CallProgress4>X4</CallProgress4>
+        <EchoOff>E0</EchoOff>
+        <VerboseText>V1</VerboseText>
+        <QuietOff>Q0</QuietOff>
+        <QuietOn>Q1</QuietOn>
+        <DialCommandStateModifier>;</DialCommandStateModifier>
+        <OnLine>O</OnLine>
+        <ResetConfiguration>Z</ResetConfiguration>
+        <ReturnToFactoryDefs>&amp;F</ReturnToFactoryDefs>
+        <DCDOnDuringLink>&amp;C1</DCDOnDuringLink>
+        <DTRHangUp>&amp;D2</DTRHangUp>
+        <DSRAlwaysOn>&amp;S0</DSRAlwaysOn>
+        <RTSCTSHandshake>&amp;K3</RTSCTSHandshake>
+        <XonXoffHandshake>&amp;K4</XonXoffHandshake>
+        <EscapeCharacter>+</EscapeCharacter>
+        <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+        <NoDialTone>NO DIAL TONE</NoDialTone>
+        <Busy>BUSY</Busy>
+        <NoAnswer>NO ANSWER</NoAnswer>
+        <Carrier>CARRIER</Carrier>
+        <Connect>CONNECT</Connect>
+        <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+        <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+        <CompressionNone>COMPRESSION:NONE</CompressionNone>
+        <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+        <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+        <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+        <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+        <MessageValidityPeriod>0</MessageValidityPeriod>
+        <MessageDeliveryReport>FALSE</MessageDeliveryReport>
+        <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+        <LastSessionClosedTimeout>8</LastSessionClosedTimeout>
+        <LastSocketClosedTimeout>10</LastSocketClosedTimeout>
+    </ModemBearer>
+</ModemBearerTable>
+
+<LANBearerTable>
+    <LANBearer operation="add">
+        <Name>Dummy LAN Bearer</Name>
+        <Agent>PSD.agt</Agent>
+        <IfName>ppp</IfName>
+        <LDDName>Dummy LDD</LDDName>
+        <PDDName>Dummy PDD</PDDName>
+    </LANBearer>
+</LANBearerTable>
+
+<LANServiceTable>
+    <LANService operation="add">
+        <Name>Ethernet</Name>
+        <IfNetworks>ip,ip6</IfNetworks>
+        <IpNetMask>255.255.255.0</IpNetMask>
+        <IpGateway>194.72.6.1</IpGateway>
+        <IpAddr>192.168.0.100</IpAddr>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
+        <IpNameServer1>194.72.6.51</IpNameServer1>
+        <IpNameServer2>194.72.6.52</IpNameServer2>
+    </LANService>
+</LANServiceTable>
+
+<DialInISPTable>
+    <DialInISP operation="template">
+        <Name>Default Dial In ISP</Name>
+        <UseLoginScript>FALSE</UseLoginScript>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+        <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <EnableSWComp>FALSE</EnableSWComp>
+        <UseEdge>FALSE</UseEdge>
+    </DialInISP>
+    <DialInISP operation="add">
+        <Name>Dial In CS ISP</Name>
+        <UseLoginScript>FALSE</UseLoginScript>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+        <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <EnableSWComp>FALSE</EnableSWComp>
+        <UseEdge>FALSE</UseEdge>
+    </DialInISP>
+</DialInISPTable>
+
+<DialOutISPTable>
+    <DialOutISP operation="template">
+        <Name>Default Dial Out ISP</Name>
+        <DialResolution>TRUE</DialResolution>
+        <UseLoginScript>FALSE</UseLoginScript>
+        <PromptForLogin>TRUE</PromptForLogin>
+        <IfPromptForAuth>TRUE</IfPromptForAuth>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+        <DisplayPCT>FALSE</DisplayPCT>
+        <IfCallbackEnabled>FALSE</IfCallbackEnabled>
+        <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <EnableSWComp>FALSE</EnableSWComp>
+        <BearerService>0</BearerService>
+        <BearerProtocol>0</BearerProtocol>
+        <RlpVersion>0</RlpVersion>
+        <IwfToMs>0</IwfToMs>
+        <MsToIwf>0</MsToIwf>
+        <AckTimer>0</AckTimer>
+        <RetransmissionAttempts>0</RetransmissionAttempts>
+        <ResequencePeriod>0</ResequencePeriod>
+        <V42Compression>0</V42Compression>
+        <V42Codewords>0</V42Codewords>
+        <V42MaxLength>0</V42MaxLength>
+        <Asymmetry>0</Asymmetry>
+        <UserInitUpgrade>FALSE</UserInitUpgrade>
+        <UseEdge>FALSE</UseEdge>
+    </DialOutISP>
+    <DialOutISP operation="add">
+        <Name>NT RAS</Name>
+        <DialResolution>TRUE</DialResolution>
+        <UseLoginScript>TRUE</UseLoginScript>
+        <PromptForLogin>FALSE</PromptForLogin>
+        <IfPromptForAuth>FALSE</IfPromptForAuth>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
+        <Type>INTERNETONLY</Type>
+        <LoginScript>CHARMAP \[windows-1252\]\nLOOP 10\n{\nSEND &quot;CLIENT&quot;+&lt;0x0d&gt;\nWAIT 3\n{\n&quot;SERVER&quot; OK\n}\n}\nEXIT KErrNoAnswer$\n\nOK:\nEXIT\n</LoginScript>
+        <DisplayPCT>FALSE</DisplayPCT>
+        <IfNetworks>ip</IfNetworks>
+        <IfAuthName>RasUser</IfAuthName>
+        <IfAuthPass>pass</IfAuthPass>
+        <AuthRetries>0</AuthRetries>
+        <IfCallbackEnabled>FALSE</IfCallbackEnabled>
+        <CallbackTimeout>0</CallbackTimeout>
+        <IpNameServer1>10.16.59.15</IpNameServer1>
+        <IpNameServer2>0.0.0.0</IpNameServer2>
+        <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <EnableSWComp>FALSE</EnableSWComp>
+        <BearerService>0</BearerService>
+        <BearerName>ASYNCHRONOUS</BearerName>
+        <BearerSpeed>UNSPECIFIED</BearerSpeed>
+        <BearerCE>UNSPECIFIED</BearerCE>
+        <BearerType>CSD</BearerType>
+        <ChannelCoding>UNSPECIFIED</ChannelCoding>
+        <AIUR>9600</AIUR>
+        <RequestedTimeSlots>0</RequestedTimeSlots>
+        <MaximumTimeSlots>0</MaximumTimeSlots>
+        <BearerProtocol>0</BearerProtocol>
+        <RlpVersion>0</RlpVersion>
+        <IwfToMs>0</IwfToMs>
+        <MsToIwf>0</MsToIwf>
+        <AckTimer>0</AckTimer>
+        <RetransmissionAttempts>0</RetransmissionAttempts>
+        <ResequencePeriod>0</ResequencePeriod>
+        <V42Compression>0</V42Compression>
+        <V42Codewords>0</V42Codewords>
+        <V42MaxLength>0</V42MaxLength>
+        <Asymmetry>0</Asymmetry>
+        <UserInitUpgrade>FALSE</UserInitUpgrade>
+        <UseEdge>FALSE</UseEdge>
+    </DialOutISP>
+    <DialOutISP operation="add">
+        <Name>Linux</Name>
+        <DialResolution>TRUE</DialResolution>
+        <UseLoginScript>FALSE</UseLoginScript>
+        <PromptForLogin>FALSE</PromptForLogin>
+        <IfPromptForAuth>FALSE</IfPromptForAuth>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+        <Description>Linux</Description>
+        <Type>INTERNETONLY</Type>
+        <LoginScript>New Record</LoginScript>
+        <LoginName>RasUser</LoginName>
+        <DisplayPCT>FALSE</DisplayPCT>
+        <IfNetworks>ip</IfNetworks>
+        <IfAuthName>RasUser</IfAuthName>
+        <IfAuthPass>pass</IfAuthPass>
+        <AuthRetries>0</AuthRetries>
+        <IfCallbackEnabled>FALSE</IfCallbackEnabled>
+        <IfCallbackType>IETF0</IfCallbackType>
+        <CallbackTimeout>0</CallbackTimeout>
+        <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <EnableSWComp>FALSE</EnableSWComp>
+        <BearerService>0</BearerService>
+        <BearerName>ASYNCHRONOUS</BearerName>
+        <BearerSpeed>UNSPECIFIED</BearerSpeed>
+        <BearerCE>UNSPECIFIED</BearerCE>
+        <BearerType>CSD</BearerType>
+        <ChannelCoding>UNSPECIFIED</ChannelCoding>
+        <AIUR>9600</AIUR>
+        <RequestedTimeSlots>0</RequestedTimeSlots>
+        <MaximumTimeSlots>0</MaximumTimeSlots>
+        <BearerProtocol>0</BearerProtocol>
+        <RlpVersion>0</RlpVersion>
+        <IwfToMs>0</IwfToMs>
+        <MsToIwf>0</MsToIwf>
+        <AckTimer>0</AckTimer>
+        <RetransmissionAttempts>0</RetransmissionAttempts>
+        <ResequencePeriod>0</ResequencePeriod>
+        <V42Compression>0</V42Compression>
+        <V42Codewords>0</V42Codewords>
+        <V42MaxLength>0</V42MaxLength>
+        <Asymmetry>0</Asymmetry>
+        <UserInitUpgrade>FALSE</UserInitUpgrade>
+        <UseEdge>FALSE</UseEdge>
+    </DialOutISP>
+    <DialOutISP operation="add">
+        <Name>Dummy</Name>
+        <DialResolution>TRUE</DialResolution>
+        <UseLoginScript>FALSE</UseLoginScript>
+        <PromptForLogin>FALSE</PromptForLogin>
+        <IfPromptForAuth>FALSE</IfPromptForAuth>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+        <Description>Dummy</Description>
+        <Type>INTERNETONLY</Type>
+        <LoginScript>New Record</LoginScript>
+        <DisplayPCT>FALSE</DisplayPCT>
+        <IfNetworks>ip</IfNetworks>
+        <AuthRetries>0</AuthRetries>
+        <IfCallbackEnabled>FALSE</IfCallbackEnabled>
+        <IfCallbackType>IETF0</IfCallbackType>
+        <CallbackTimeout>0</CallbackTimeout>
+        <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <EnableSWComp>FALSE</EnableSWComp>
+        <BearerService>0</BearerService>
+        <BearerName>ASYNCHRONOUS</BearerName>
+        <BearerSpeed>UNSPECIFIED</BearerSpeed>
+        <BearerCE>UNSPECIFIED</BearerCE>
+        <BearerType>CSD</BearerType>
+        <ChannelCoding>UNSPECIFIED</ChannelCoding>
+        <AIUR>9600</AIUR>
+        <RequestedTimeSlots>0</RequestedTimeSlots>
+        <MaximumTimeSlots>0</MaximumTimeSlots>
+        <BearerProtocol>0</BearerProtocol>
+        <RlpVersion>0</RlpVersion>
+        <IwfToMs>0</IwfToMs>
+        <MsToIwf>0</MsToIwf>
+        <AckTimer>0</AckTimer>
+        <RetransmissionAttempts>0</RetransmissionAttempts>
+        <ResequencePeriod>0</ResequencePeriod>
+        <V42Compression>0</V42Compression>
+        <V42Codewords>0</V42Codewords>
+        <V42MaxLength>0</V42MaxLength>
+        <Asymmetry>0</Asymmetry>
+        <UserInitUpgrade>FALSE</UserInitUpgrade>
+        <UseEdge>FALSE</UseEdge>
+    </DialOutISP>
+    <DialOutISP operation="add">
+        <Name>Bad NT RAS</Name>
+        <DialResolution>TRUE</DialResolution>
+        <UseLoginScript>TRUE</UseLoginScript>
+        <PromptForLogin>FALSE</PromptForLogin>
+        <IfPromptForAuth>FALSE</IfPromptForAuth>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
+        <Type>INTERNETONLY</Type>
+        <LoginScript>CHARMAP \[windows-1252\]\nLOOP 10\n{\nSEND &quot;CLIENT&quot;+&lt;0x0d&gt;\nWAIT 3\n{\n&quot;SERVER&quot; OK\n}\n}\nEXIT KErrNoAnswer$\n\nOK:\nEXIT\n</LoginScript>
+        <DisplayPCT>FALSE</DisplayPCT>
+        <IfNetworks>ip</IfNetworks>
+        <IfAuthName>RasUser</IfAuthName>
+        <IfAuthPass>badpass</IfAuthPass>
+        <AuthRetries>0</AuthRetries>
+        <IfCallbackEnabled>FALSE</IfCallbackEnabled>
+        <CallbackTimeout>0</CallbackTimeout>
+        <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <EnableSWComp>FALSE</EnableSWComp>
+        <BearerService>0</BearerService>
+        <BearerName>ASYNCHRONOUS</BearerName>
+        <BearerSpeed>UNSPECIFIED</BearerSpeed>
+        <BearerCE>UNSPECIFIED</BearerCE>
+        <BearerType>CSD</BearerType>
+        <ChannelCoding>UNSPECIFIED</ChannelCoding>
+        <AIUR>9600</AIUR>
+        <RequestedTimeSlots>0</RequestedTimeSlots>
+        <MaximumTimeSlots>0</MaximumTimeSlots>
+        <BearerProtocol>0</BearerProtocol>
+        <RlpVersion>0</RlpVersion>
+        <IwfToMs>0</IwfToMs>
+        <MsToIwf>0</MsToIwf>
+        <AckTimer>0</AckTimer>
+        <RetransmissionAttempts>0</RetransmissionAttempts>
+        <ResequencePeriod>0</ResequencePeriod>
+        <V42Compression>0</V42Compression>
+        <V42Codewords>0</V42Codewords>
+        <V42MaxLength>0</V42MaxLength>
+        <Asymmetry>0</Asymmetry>
+        <UserInitUpgrade>FALSE</UserInitUpgrade>
+        <UseEdge>FALSE</UseEdge>
+    </DialOutISP>
+</DialOutISPTable>
+
+<AgentLookupTable>
+</AgentLookupTable>
+
+<ChargecardTable>
+    <Chargecard operation="add">
+        <Name>Dummy BT Chargecard</Name>
+        <AccountNumber>144,12345678</AccountNumber>
+        <Pin>0000</Pin>
+        <LocalRule>HG</LocalRule>
+        <NatRule>HFG</NatRule>
+        <IntlRule>HEFG</IntlRule>
+    </Chargecard>
+    <Chargecard operation="add">
+        <Name>Dummy Mercury Chargecard</Name>
+        <AccountNumber>0500800800,,12345678</AccountNumber>
+        <Pin>****</Pin>
+        <LocalRule>HG</LocalRule>
+        <NatRule>J,K,0FG</NatRule>
+        <IntlRule>HEFG</IntlRule>
+    </Chargecard>
+</ChargecardTable>
+
+<ConnectionPreferencesTable>
+    <ConnectionPreferences operation="add">
+        <Name>ConnectionPreferencesTable2</Name>
+        <Ranking>1</Ranking>
+        <Direction>OUTGOING</Direction>
+        <DialogPref>DONOTPROMPT</DialogPref>
+        <BearerSet>CSD</BearerSet>
+        <IAPRef>IAP.Dummy</IAPRef>
+    </ConnectionPreferences>
+</ConnectionPreferencesTable>
+
+<GlobalSettingsTable>
+    <GlobalSettings operation="add">
+        <Name>GlobalSettingsTable1</Name>
+        <RedialAttempts>3</RedialAttempts>
+        <SmsBearer>2</SmsBearer>
+        <SmsReceiveMode>2</SmsReceiveMode>
+        <GPRSAttachMode>1</GPRSAttachMode>
+        <AcceptIncomingGprs>1</AcceptIncomingGprs>
+        <ConnectionAttempts>2</ConnectionAttempts>
+        <ModemForDataAndFax>2</ModemForDataAndFax>
+        <ModemForPhoneServicesAndSMS>2</ModemForPhoneServicesAndSMS>
+        <LocationForDataAndFax>Location.Office</LocationForDataAndFax>
+        <LocationForPhoneServicesAndSMS>Location.Office</LocationForPhoneServicesAndSMS>
+        <GPRSClassCBearer>GSM</GPRSClassCBearer>
+        <DefaultNetwork>Network.NT RAS</DefaultNetwork>
+        <BearerAvailabilityCheckTSY>mm</BearerAvailabilityCheckTSY>
+    </GlobalSettings>
+</GlobalSettingsTable>
+
+<IncomingGPRSTable>
+    <IncomingGPRS operation="add">
+        <Name>Dummy Incoming GPRS Settings</Name>
+        <APN>Test</APN>
+        <PDPType>IPV4</PDPType>
+        <PDPAddress>0.0.0.0</PDPAddress>
+        <IfPromptForAuth>FALSE</IfPromptForAuth>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+        <ReqPrecedence>1</ReqPrecedence>
+        <ReqDelay>1</ReqDelay>
+        <ReqReliability>1</ReqReliability>
+        <ReqPeakThroughput>1</ReqPeakThroughput>
+        <ReqMeanThroughput>1</ReqMeanThroughput>
+        <MinPrecedence>1</MinPrecedence>
+        <MinDelay>1</MinDelay>
+        <MinReliability>1</MinReliability>
+        <MinPeakThroughput>1</MinPeakThroughput>
+        <MinMeanThroughput>1</MinMeanThroughput>
+        <DataCompression>FALSE</DataCompression>
+        <HeaderCompression>FALSE</HeaderCompression>
+        <AnonymousAccess>FALSE</AnonymousAccess>
+        <IfNetworks>ip</IfNetworks>
+        <IfAuthName>RasUser</IfAuthName>
+        <IfAuthPass>pass</IfAuthPass>
+        <AuthRetries>1</AuthRetries>
+        <IpNameServer1>0.0.0.0</IpNameServer1>
+        <IpNameServer2>0.0.0.0</IpNameServer2>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <GprsUseEdge>FALSE</GprsUseEdge>
+    </IncomingGPRS>
+</IncomingGPRSTable>
+
+<OutgoingGPRSTable>
+    <OutgoingGPRS operation="add">
+        <Name>NTRas GPRS</Name>
+        <APN>Test</APN>
+        <PDPType>IPV4</PDPType>
+        <IfPromptForAuth>FALSE</IfPromptForAuth>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
+        <ReqPrecedence>2</ReqPrecedence>
+        <ReqDelay>4</ReqDelay>
+        <ReqReliability>3</ReqReliability>
+        <ReqPeakThroughput>3</ReqPeakThroughput>
+        <ReqMeanThroughput>31</ReqMeanThroughput>
+        <MinPrecedence>2</MinPrecedence>
+        <MinDelay>4</MinDelay>
+        <MinReliability>3</MinReliability>
+        <MinPeakThroughput>3</MinPeakThroughput>
+        <MinMeanThroughput>31</MinMeanThroughput>
+        <DataCompression>FALSE</DataCompression>
+        <HeaderCompression>FALSE</HeaderCompression>
+        <AnonymousAccess>FALSE</AnonymousAccess>
+        <IfNetworks>ip</IfNetworks>
+        <IfAuthName>RasUser</IfAuthName>
+        <IfAuthPass>pass</IfAuthPass>
+        <AuthRetries>1</AuthRetries>
+        <IpNameServer1>194.72.6.51</IpNameServer1>
+        <IpNameServer2>194.72.6.51</IpNameServer2>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <GprsUseEdge>FALSE</GprsUseEdge>
+    </OutgoingGPRS>
+</OutgoingGPRSTable>
+
+<DefaultGPRSTable>
+    <DefaultGPRS operation="add">
+        <Name>Dummy Default GPRS Settings</Name>
+        <APN>Access point name</APN>
+        <PDPType>IPV6</PDPType>
+        <PDPAddress>www.wid.com</PDPAddress>
+        <Usage>1</Usage>
+        <Precedence>1</Precedence>
+        <Delay>1</Delay>
+        <Reliability>1</Reliability>
+        <PeakThroughput>1</PeakThroughput>
+        <MeanThroughput>1</MeanThroughput>
+        <MinPrecedence>1</MinPrecedence>
+        <MinDelay>1</MinDelay>
+        <MinReliability>1</MinReliability>
+        <MinPeakThroughput>1</MinPeakThroughput>
+        <MinMeanThroughput>1</MinMeanThroughput>
+        <DataCompression>TRUE</DataCompression>
+        <HeaderCompression>TRUE</HeaderCompression>
+        <GprsUseEdge>FALSE</GprsUseEdge>
+        <AnonymousAccess>TRUE</AnonymousAccess>
+    </DefaultGPRS>
+</DefaultGPRSTable>
+
+<ProxyTable>
+    <Proxy operation="add">
+        <Name>ProxyTable1</Name>
+        <ISPRef>DialOutISP.NT RAS</ISPRef>
+        <UseProxyServer>TRUE</UseProxyServer>
+        <ProtocolName>http</ProtocolName>
+        <ProxyServerName>www.dummyproxy.com</ProxyServerName>
+        <PortNumber>80</PortNumber>
+        <Exceptions>www.dummyproxy.com/exception</Exceptions>
+    </Proxy>
+</ProxyTable>
+
+<LocationTable>
+    <Location operation="template">
+        <Name>Default Location</Name>
+        <Mobile>TRUE</Mobile>
+        <UsePulseDial>FALSE</UsePulseDial>
+        <WaitForDialTone>FALSE</WaitForDialTone>
+        <PauseAfterDialout>0</PauseAfterDialout>
+        <IntlPrefixCode>+</IntlPrefixCode>
+        <NatPrefixCode>0</NatPrefixCode>
+        <NatCode>44</NatCode>
+    </Location>
+    <Location operation="add">
+        <Name>Office</Name>
+        <Mobile>FALSE</Mobile>
+        <UsePulseDial>FALSE</UsePulseDial>
+        <WaitForDialTone>FALSE</WaitForDialTone>
+        <PauseAfterDialout>0</PauseAfterDialout>
+        <IntlPrefixCode>00</IntlPrefixCode>
+        <NatPrefixCode>0</NatPrefixCode>
+        <NatCode>44</NatCode>
+        <AreaCode>171</AreaCode>
+        <DialOutCode>9,</DialOutCode>
+    </Location>
+    <Location operation="add">
+        <Name>Office Direct Dial</Name>
+        <Mobile>FALSE</Mobile>
+        <UsePulseDial>FALSE</UsePulseDial>
+        <WaitForDialTone>FALSE</WaitForDialTone>
+        <PauseAfterDialout>0</PauseAfterDialout>
+        <IntlPrefixCode>00</IntlPrefixCode>
+        <NatPrefixCode>0</NatPrefixCode>
+        <NatCode>44</NatCode>
+        <AreaCode>171</AreaCode>
+    </Location>
+    <Location operation="add">
+        <Name>Mobile</Name>
+        <Mobile>TRUE</Mobile>
+        <UsePulseDial>FALSE</UsePulseDial>
+        <WaitForDialTone>FALSE</WaitForDialTone>
+        <PauseAfterDialout>0</PauseAfterDialout>
+        <IntlPrefixCode>+</IntlPrefixCode>
+        <NatPrefixCode>0</NatPrefixCode>
+        <NatCode>44</NatCode>
+    </Location>
+    <Location operation="add">
+        <Name>Home</Name>
+        <Mobile>FALSE</Mobile>
+        <UsePulseDial>TRUE</UsePulseDial>
+        <WaitForDialTone>TRUE</WaitForDialTone>
+        <PauseAfterDialout>0</PauseAfterDialout>
+        <IntlPrefixCode>00</IntlPrefixCode>
+        <NatPrefixCode>0</NatPrefixCode>
+        <NatCode>44</NatCode>
+        <AreaCode>181</AreaCode>
+    </Location>
+</LocationTable>
+
+<SecureSocketTable>
+    <SecureSocket operation="add">
+        <Name>SecureSocketTable1</Name>
+        <ProtocolName>ssl3.0</ProtocolName>
+        <ProtoLibrary>ssladaptor.dll</ProtoLibrary>
+    </SecureSocket>
+    <SecureSocket operation="add">
+        <Name>SecureSocketTable2</Name>
+        <ProtocolName>tls1.0</ProtocolName>
+        <ProtoLibrary>ssladaptor.dll</ProtoLibrary>
+    </SecureSocket>
+</SecureSocketTable>
+
+<BTDeviceTable>
+</BTDeviceTable>
+
+<BTPersistTable>
+</BTPersistTable>
+
+<BTSecurityTable>
+</BTSecurityTable>
+
+<BTDefaultTable>
+</BTDefaultTable>
+
+<WAPAccessPointTable>
+    <WAPAccessPoint operation="template">
+        <Name>Default Dial In ISP</Name>
+        <CurrentBearer>WAPIPBearer</CurrentBearer>
+    </WAPAccessPoint>
+    <WAPAccessPoint operation="add">
+        <Name>Dummy WAP Settings</Name>
+        <CurrentBearer>WAPIPBearer</CurrentBearer>
+        <StartPage>www.wapstart.com</StartPage>
+    </WAPAccessPoint>
+</WAPAccessPointTable>
+
+<WAPIPBearerTable>
+    <WAPIPBearer operation="template">
+        <Name>WAPIPBearerTable1</Name>
+        <AccessPoint>WAPAccessPoint.-1</AccessPoint>
+        <WSPOption>CONNECTIONLESS</WSPOption>
+        <Security>FALSE</Security>
+        <IAPRef>IAP.-1</IAPRef>
+        <ProxyPortNumber>0</ProxyPortNumber>
+    </WAPIPBearer>
+    <WAPIPBearer operation="add">
+        <Name>WAPIPBearerTable2</Name>
+        <AccessPoint>WAPAccessPoint.Dummy WAP Settings</AccessPoint>
+        <GatewayAddress>www.wapgateway.com</GatewayAddress>
+        <WSPOption>CONNECTIONORIENTED</WSPOption>
+        <Security>FALSE</Security>
+        <IAPRef>IAP.NTRas GPRS</IAPRef>
+        <ProxyPortNumber>1</ProxyPortNumber>
+    </WAPIPBearer>
+</WAPIPBearerTable>
+
+<WAPSMSBearerTable>
+    <WAPSMSBearer operation="template">
+        <Name>WAPSMSBearerTable1</Name>
+        <AccessPoint>WAPAccessPoint.-1</AccessPoint>
+        <WSPOption>CONNECTIONLESS</WSPOption>
+        <Security>FALSE</Security>
+    </WAPSMSBearer>
+    <WAPSMSBearer operation="add">
+        <Name>WAPSMSBearerTable2</Name>
+        <AccessPoint>WAPAccessPoint.Dummy WAP Settings</AccessPoint>
+        <GatewayAddress>+442079460221</GatewayAddress>
+        <WSPOption>CONNECTIONORIENTED</WSPOption>
+        <Security>FALSE</Security>
+        <ServiceCentreAddress>+442079460223</ServiceCentreAddress>
+    </WAPSMSBearer>
+</WAPSMSBearerTable>
+
+<VirtualBearerTable>
+</VirtualBearerTable>
+
+<VpnServiceTable>
+</VpnServiceTable>
+
+
+</CommDB:Config>
--- a/datacommsserver/esockserver/test/TE_RConnectionSuite/config/te_rconnectionallinterfacenot_NonConnection.script	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/config/te_rconnectionallinterfacenot_NonConnection.script	Tue Jan 26 13:09:14 2010 +0200
@@ -118,5 +118,25 @@
 END_TESTCASE			COMINF-ESOCK-RConnectionSuite-AllInterfaceNot-0209
 
 
+
+
+
+
+// NOTE: This test changes the previously loaded commdb
+run_script z:\TestData\scripts\te_esock_test_unloadesockForced.script
+ced z:\testdata\configs\def143083.xml
+run_script z:\TestData\scripts\te_esock_test_loadesock.script
+
+
+START_TESTCASE			COMINF-ESOCK-RConnectionSuite-AllInterfaceNot-0210
+//! @SYMTestCaseID		COMINF-ESOCK-RConnectionSuite-AllInterfaceNot-0210
+
+heap_mark
+run_test_step 500, TE_RConnectionSuite TestAllInterfaceNot210 
+heap_markend
+test_complete
+END_TESTCASE			COMINF-ESOCK-RConnectionSuite-AllInterfaceNot-0210
+
+
 run_script z:\TestData\scripts\te_esock_test_unloadesockForced.script
 
--- a/datacommsserver/esockserver/test/TE_RConnectionSuite/group/TE_RConnectionSuite.iby	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/group/TE_RConnectionSuite.iby	Tue Jan 26 13:09:14 2010 +0200
@@ -42,6 +42,7 @@
 data=EPOCROOT##epoc32\data\z\testdata\scripts\te_rconnectionhostresolvertests_connection_eth_target.script      testdata\scripts\te_rconnectionhostresolvertests_connection_eth.script
 data=EPOCROOT##epoc32\data\z\testdata\scripts\te_rconnectionallinterfacenot_connection_eth_target.script        testdata\scripts\te_rconnectionallinterfacenot_connection_eth.script
 
+data=EPOCROOT##epoc32\data\z\testdata\configs\def143083.xml                 						testdata\configs\def143083.xml
 data=EPOCROOT##epoc32\data\z\testdata\configs\rconnectionudp_ethernet_MOMAP16xx.xml                 testdata\configs\rconnectionudp_ethernet.xml
 data=EPOCROOT##epoc32\data\z\testdata\configs\rconnectionethernet_MOMAP16xx.xml                     testdata\configs\rconnectionethernet.xml
 data=EPOCROOT##epoc32\data\z\testdata\configs\ainethernet_MOMAP16xx.xml                             testdata\configs\ainethernet.xml
--- a/datacommsserver/esockserver/test/TE_RConnectionSuite/group/bld.inf	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/group/bld.inf	Tue Jan 26 13:09:14 2010 +0200
@@ -107,6 +107,7 @@
 
 // Configs
 // ------------------------------------
+../config/def143083.xml								z:/testdata/configs/def143083.xml
 ../config/rconnectionudp.xml						z:/testdata/configs/rconnectionudp.xml
 ../config/rconnectionntras.xml						z:/testdata/configs/rconnectionntras.xml
 ../config/ainudp.xml                                z:/testdata/configs/ainudp.xml
--- a/datacommsserver/esockserver/test/TE_RConnectionSuite/inc/TE_AllInterfaceNotification.h	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/inc/TE_AllInterfaceNotification.h	Tue Jan 26 13:09:14 2010 +0200
@@ -153,5 +153,23 @@
 
 };
 
-#endif // TS_ALLINTERFACENOTIFICATION_H
+class TE_RConnectionTestAllInterfaceNot210 : public CTestStep
+    {
+public:
+    virtual TVerdict doTestStepL();
+    virtual TVerdict doTestStepPreambleL();
+    virtual TVerdict doTestStepPostambleL();
 
+    ~TE_RConnectionTestAllInterfaceNot210();
+    
+private:
+    RSocketServ iSS;
+    RConnection iConnStart;
+    RConnection iConnAttach;
+    RConnection iConnAllIfaceNotify;
+    RTimer iTimer;
+    };
+
+#endif
+// TS_ALLINTERFACENOTIFICATION_H
+
--- a/datacommsserver/esockserver/test/TE_RConnectionSuite/src/TE_AllInterfaceNotification.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/src/TE_AllInterfaceNotification.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -1628,3 +1628,201 @@
     return TestStepResult();
 } // TE_RConnectionTest318
 
+
+/******************************************************************************
+ *
+ * Test TestAllInterfaceNot112
+ *
+ * Added for def143083
+ * 
+ * Commsdat configuration should have a default connection that fails to start.
+ * Uses dummynif and sets it to fail using the mobility pub/sub.
+ * 
+ * Start listening for AllInterfaceNotification
+ * Start a connection asynchronously
+ * On completion of AllInterfaceNotification with EInterfaceUp - Re-request
+ * Attach another connection to the interface reported as up
+ * Async start completes with error
+ * AllInterfaceNotification *SHOULD* complete with EInterfaceDown
+ *****************************************************************************/
+TVerdict TE_RConnectionTestAllInterfaceNot210::doTestStepL(void)
+    {
+    TInt err;
+    
+    TRequestStatus allIfaceStatus;
+    TInterfaceNotificationBuf notificationBuf;
+    iConnAllIfaceNotify.AllInterfaceNotification(notificationBuf, allIfaceStatus);
+
+    TRequestStatus connStartStatus;
+    iConnStart.Start(connStartStatus);
+    User::WaitForRequest(connStartStatus, allIfaceStatus);
+    
+    if (allIfaceStatus == KRequestPending)
+        {
+        // Fail
+        INFO_PRINTF2(_L("Connection start completed with %d before AllInterfaceNotification()"), connStartStatus.Int());
+        iConnAllIfaceNotify.CancelAllInterfaceNotification();
+        User::WaitForRequest(allIfaceStatus);
+        return EFail; // EFail has no effect, default fail result set in pre-amble
+        }
+    
+    // AllInterfaceNotification() completed
+    if (notificationBuf().iState != EInterfaceUp)
+        {
+        // Fail
+        INFO_PRINTF1(_L("AllInterfaceNotification() completed with unexpected state [iState != EInterfaceUp]"));
+        iConnStart.Stop();
+        User::WaitForRequest(connStartStatus);
+        return EFail; // EFail has no effect, default fail result set in pre-amble
+        }
+    
+    INFO_PRINTF1(_L("AllInterfaceNotification() completed with [iState == EInterfaceUp]"));
+    TConnectionInfoBuf connInfoBuf(notificationBuf().iConnectionInfo);
+
+    // Attach() to the connection
+    err = iConnAttach.Attach(connInfoBuf, RConnection::EAttachTypeMonitor);
+    if (err != KErrNone)
+        {
+        // FAIL
+        INFO_PRINTF2(_L("Attach() completed with %d"), err);
+        iConnStart.Stop();
+        User::WaitForRequest(connStartStatus);
+        return EFail; // EFail has no effect, default fail result set in pre-amble
+        }
+
+    // Re-request
+    iConnAllIfaceNotify.AllInterfaceNotification(notificationBuf, allIfaceStatus);
+
+    // Set test time out 
+    TRequestStatus timerStatus;
+    const TInt KTimerDelay = 20 * 1000 * 1000; // 20 secs should be plenty for the connection start to fail
+    iTimer.After(timerStatus, KTimerDelay);
+    
+    const TInt KRequestCount = 3; 
+    TRequestStatus* requests[KRequestCount] = { &connStartStatus, &allIfaceStatus, &timerStatus };
+    User::WaitForNRequest(requests, KRequestCount);
+    
+    if (timerStatus != KRequestPending)
+        {
+        // Fail
+        INFO_PRINTF1(_L("Guard timer elapsed"));
+        iConnAllIfaceNotify.CancelAllInterfaceNotification();
+        User::WaitForRequest(allIfaceStatus);
+        iConnStart.Stop();
+        User::WaitForRequest(connStartStatus);
+        return EFail; // EFail has no effect, default fail result set in pre-amble
+        }
+    
+    iTimer.Cancel();
+    User::WaitForRequest(timerStatus);
+    
+    if (allIfaceStatus == KRequestPending)
+        {
+        // Connection start completed
+        if (connStartStatus.Int() != KErrNone)
+            {
+            // Reset timer and wait a little longer
+            iTimer.After(timerStatus, KTimerDelay);
+            User::WaitForRequest(allIfaceStatus, timerStatus);
+            }
+        else
+            {
+            // FAIL - Misconfigured? Connection is expected to fail
+            INFO_PRINTF1(_L("Connection started successfully (** Was expected to fail **)"));
+            iConnAllIfaceNotify.CancelAllInterfaceNotification();
+            User::WaitForRequest(allIfaceStatus);
+            return EFail; // EFail has no effect, default fail result set in pre-amble
+            }
+        
+        if (allIfaceStatus == KRequestPending)
+            {
+            // FAIL
+            INFO_PRINTF1(_L("Guard timer elapsed"));
+            iConnAllIfaceNotify.CancelAllInterfaceNotification();
+            User::WaitForRequest(allIfaceStatus);
+            return EFail; // EFail has no effect, default fail result set in pre-amble
+            }
+        
+        iTimer.Cancel();
+        User::WaitForRequest(timerStatus);
+        }
+    else
+        {
+        // Just wait for the conn start to complete
+        User::WaitForRequest(connStartStatus);
+        if (connStartStatus.Int() == KErrNone)
+            {
+            // FAIL - Misconfigured? Connection is expected to fail
+            INFO_PRINTF1(_L("Connection started successfully (** Was expected to fail **)"));
+            iConnAllIfaceNotify.CancelAllInterfaceNotification();
+            User::WaitForRequest(allIfaceStatus);
+            return EFail; // EFail has no effect, default fail result set in pre-amble
+            }
+        }
+    
+    // Last thing to check - make sure it completed with interface down
+    if (notificationBuf().iState != EInterfaceDown)
+        {
+        // FAIL
+        INFO_PRINTF1(_L("AllInterfaceNotification() completed with unexpected state [iState != EInterfaceDown]"));
+        return EFail; // EFail has no effect, default fail result set in pre-amble
+        }
+    
+    // PASS
+    SetTestStepResult(EPass);
+    }
+
+TVerdict TE_RConnectionTestAllInterfaceNot210::doTestStepPreambleL()
+    {
+    TInt err;
+    
+    SetTestStepResult(EFail);
+
+    // Prepare socket server and connections
+    err = iSS.Connect();
+    TESTEL(err == KErrNone, err);
+    
+    err = iConnStart.Open(iSS);
+    TESTEL(err == KErrNone, err);
+    
+    err = iConnAttach.Open(iSS);
+    TESTEL(err == KErrNone, err);
+
+    err = iConnAllIfaceNotify.Open(iSS);
+    TESTEL(err == KErrNone, err);
+    
+    err = iTimer.CreateLocal();
+    TESTEL(err == KErrNone, err);
+    
+    // Setup the dummynif pub/sub setting
+    const TUid KAvailabilityTestingPubSubUid = { 0x10272F42 };
+    const TInt KApId = 6; /* see the def143083.xml config */
+
+    RProperty dummyNifEnableProperty;
+    err = dummyNifEnableProperty.Define(KAvailabilityTestingPubSubUid, KApId , RProperty::EInt);
+    if (err != KErrAlreadyExists)
+        {
+        TESTEL(err == KErrNone, err);
+        }
+    
+    err = dummyNifEnableProperty.Attach(KAvailabilityTestingPubSubUid, KApId);
+    TESTEL(err == KErrNone, err);
+
+    dummyNifEnableProperty.Set(0); // Dummy NIF not available - Start should fail
+    dummyNifEnableProperty.Close();
+    }
+
+TVerdict TE_RConnectionTestAllInterfaceNot210::doTestStepPostambleL()
+    {
+    
+    }
+
+TE_RConnectionTestAllInterfaceNot210::~TE_RConnectionTestAllInterfaceNot210()
+    {
+    iConnAllIfaceNotify.Close();
+    iConnAttach.Close();
+    iConnStart.Close();
+    iSS.Close();
+    
+    iTimer.Close();
+    }
--- a/datacommsserver/esockserver/test/TE_RConnectionSuite/src/TE_RConnectionSuite.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/src/TE_RConnectionSuite.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -481,6 +481,8 @@
 		testStep=new TE_RConnectionTest318();
 	else if(aStepName.Compare(_L("Test319")) == 0)
 		testStep=new TE_RConnectionTest319();
+	else if (aStepName.Compare(_L("TestAllInterfaceNot210")) == 0)
+	    testStep = new TE_RConnectionTestAllInterfaceNot210();
 	
 	return testStep;
 	}
Binary file datacommsserver/esockserver/test/TE_RSubconnection/documentation/TE_RSubConnection_Test_Specification.doc has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_Socket/SocketTestSection31.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -0,0 +1,637 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains ESock Test cases from section 1
+// 
+//
+
+// EPOC includes
+#include <e32base.h>
+#include <ss_std.h>
+
+// Test system includes
+#include "SocketTestSection31.h"
+#include <test/es_dummy.h>
+
+const TInt KBufferLength= 60000;
+
+
+
+// Test step 31.1
+// Sending more than 16k packets.
+// Stream
+// Blocking mode
+// Using pdummy
+// 
+const TDesC& CSocketTest31_1::GetTestName()
+    {
+    _LIT(ret,"Test31.1");
+    return ret;
+    }
+
+enum TVerdict CSocketTest31_1::InternalDoTestStepL( void )
+    {
+    TVerdict verdict = EPass;
+
+    Logger().WriteFormat(_L("Test Purpose: Sending large amount of data (more than 16K,60k) by using Stream"));
+    
+    // connect to esock
+    Logger().WriteFormat(_L("Attempting to connect to socket server"));
+    RSocketServ ss;
+    
+    TSessionPref pref;
+    pref.iAddrFamily = KDummyAddrFamily;
+    pref.iProtocol = KDummyFour;
+    TInt ret = ss.Connect(pref);
+    CleanupClosePushL(ss);
+    Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret); 
+    
+    Logger().WriteFormat(_L("Finding for dummy protocol 4"));
+    TProtocolDesc protoInfo;
+    ret = ss.FindProtocol(_L("Dummy Protocol 4"), protoInfo);
+    Logger().WriteFormat(_L("FindProtocol returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+    
+    Logger().WriteFormat(_L("Open a socket on Dummy Protocol 4"));
+    RSocket sock;
+    CleanupClosePushL (sock);
+    ret = sock.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol);
+    Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+    
+    Logger().WriteFormat(_L("Perform connect"));
+    TRequestStatus status;
+    TSockAddr addr;
+    sock.Connect(addr, status);
+    User::WaitForRequest(status);
+    TESTL(KErrNone == status.Int());
+    
+    
+    // Setting options
+    // Force the Send to 'flow off'
+    TBool flowOff = ETrue;
+    ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+    Logger().WriteFormat(_L("SetOpt (flow off) returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+    
+    // Setting up buffer
+    HBufC8* writebuf = HBufC8::NewMaxLC(KBufferLength);
+    HBufC8* readbuf  = HBufC8::NewMaxLC(KBufferLength);
+   
+    TPtr8 ptrwritebuf(const_cast<TUint8*>(writebuf->Ptr()), KBufferLength);
+    TPtr8 ptrreadbuf(const_cast<TUint8*>(readbuf->Ptr()), KBufferLength);
+   
+    ptrwritebuf.SetLength(ptrwritebuf.MaxLength());
+    ptrreadbuf.SetLength(ptrreadbuf.MaxLength());
+   
+    // Filling buffer
+    ptrwritebuf.Repeat(_L8("Stream-packet: helloworld"));
+   
+    TRequestStatus txStat;
+    TRequestStatus rxStat;
+    TSockXfrLength txlen;
+    TSockXfrLength rxlen;
+    TInt txSize = 0, txCnt = 0;;
+    TInt rxSize = 0, rxCnt = -1;
+    TBool txSentAll = EFalse;
+    TBool rxRecvAll = EFalse;
+       
+    while(rxSize < KBufferLength)
+        {
+        // sending packets
+        if(txStat.Int() != KRequestPending && !txSentAll)
+            {
+            RDebug::Printf("tx status:%d, ", txStat.Int());
+            TPtrC8 ptrtempbuf(ptrwritebuf.Mid(txSize));
+            sock.Send(ptrtempbuf, 0, txStat, txlen);
+                       
+            // Now enable the write to complete, by ending the 'flow off'
+            flowOff = EFalse;
+            ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+            TESTL(KErrNone == ret);
+            
+            User::WaitForRequest(txStat);
+            ++txCnt;
+            txSize += txlen();
+            
+            if(txStat!=KErrNone)
+                {
+                Logger().WriteFormat(_L("Error in sending packet : %d "), txStat.Int());
+                break;
+                }
+            RDebug::Printf("tx #%d, +%d\n", txCnt, txlen());
+            if(txSize >= KBufferLength)
+                {
+                txSentAll=ETrue;
+                }
+            }
+        
+        // receiving packets
+        if((rxStat.Int() != KRequestPending) && !rxRecvAll)
+            {
+            RDebug::Printf("rx status:%d, ", rxStat.Int());
+            ++rxCnt;
+            
+            sock.RecvOneOrMore(ptrreadbuf, 0, rxStat, rxlen);
+            User::WaitForRequest(rxStat);
+            rxSize += rxlen();
+            
+            if(rxStat!=KErrNone)
+                {
+                Logger().WriteFormat(_L("Error in receiving packet : %d "), rxStat.Int());
+                break;
+                }
+            RDebug::Printf("rx #%d, +%d\n", rxCnt, rxlen());
+            
+            if(rxSize >= KBufferLength)
+                {
+                rxRecvAll=ETrue;
+                }
+            }
+        }
+    
+    CleanupStack::PopAndDestroy(2, writebuf);   //  writebuf and readbuf    
+    CleanupStack::PopAndDestroy(2); // sock, ss
+    
+    SetTestStepResult(EPass);
+    return TestStepResult();
+    }
+
+// Test step 31.2
+// Sending more than 16k packets.
+// Stream
+// Non-Blocking mode
+// Using pdummy
+// 
+const TDesC& CSocketTest31_2::GetTestName()
+    {
+    _LIT(ret,"Test31.2");
+    return ret;
+    }
+
+enum TVerdict CSocketTest31_2::InternalDoTestStepL( void )
+    {
+    TVerdict verdict = EPass;
+
+    Logger().WriteFormat(_L("Test Purpose: Sending large amount of data (more than 16K,60k) by using Stream"));
+    
+    // connect to esock
+    Logger().WriteFormat(_L("Attempting to connect to socket server"));
+    RSocketServ ss;
+    
+    TSessionPref pref;
+    pref.iAddrFamily = KDummyAddrFamily;
+    pref.iProtocol = KDummyFour;
+    TInt ret = ss.Connect(pref);
+    CleanupClosePushL(ss);
+    Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret); 
+    
+    Logger().WriteFormat(_L("Finding for dummy protocol 4"));
+    TProtocolDesc protoInfo;
+    ret = ss.FindProtocol(_L("Dummy Protocol 4"), protoInfo);
+    Logger().WriteFormat(_L("FindProtocol returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+    
+    Logger().WriteFormat(_L("Open a socket on Dummy Protocol 4"));
+    RSocket sock;
+    CleanupClosePushL (sock);
+    ret = sock.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol);
+    Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+    
+    Logger().WriteFormat(_L("Perform connect"));
+    TRequestStatus status;
+    TSockAddr addr;
+    sock.Connect(addr, status);
+    User::WaitForRequest(status);
+    TESTL(KErrNone == status.Int());
+    
+    
+    // Setting options
+    // Force the Send to 'flow off'
+    TBool flowOff = ETrue;
+    ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+    Logger().WriteFormat(_L("SetOpt (flow off) returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+    
+    ret = sock.SetOpt(KSONonBlockingIO, KSOLSocket, 1);
+    Logger().WriteFormat(_L("SetOpt NonBlockingIO returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+    
+    // Setting up buffer
+    HBufC8* writebuf = HBufC8::NewMaxLC(KBufferLength);
+    HBufC8* readbuf  = HBufC8::NewMaxLC(KBufferLength);
+   
+    TPtr8 ptrwritebuf(const_cast<TUint8*>(writebuf->Ptr()), KBufferLength);
+    TPtr8 ptrreadbuf(const_cast<TUint8*>(readbuf->Ptr()), KBufferLength);
+   
+    ptrwritebuf.SetLength(ptrwritebuf.MaxLength());
+    ptrreadbuf.SetLength(ptrreadbuf.MaxLength());
+   
+    // Filling buffer
+    ptrwritebuf.Repeat(_L8("Stream-packet: helloworld"));
+   
+    TRequestStatus txStat;
+    TRequestStatus rxStat;
+    TSockXfrLength txlen;
+    TSockXfrLength rxlen;
+    TInt txSize = 0, txCnt = 0;;
+    TInt rxSize = 0, rxCnt = -1;
+    TBool txSentAll = EFalse;
+    TBool rxRecvAll = EFalse;
+       
+    while(rxSize < KBufferLength)
+        {
+        // sending packets
+        if(txStat.Int() != KRequestPending && !txSentAll)
+            {
+            RDebug::Printf("tx status:%d, ", txStat.Int());
+            TPtrC8 ptrtempbuf(ptrwritebuf.Mid(txSize));
+            sock.Send(ptrtempbuf, 0, txStat, txlen);
+                        
+            // Now enable the write to complete, by ending the 'flow off'
+            flowOff = EFalse;
+            ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+            TESTL(KErrNone == ret);
+            
+            User::WaitForRequest(txStat);
+            ++txCnt;
+            txSize += txlen();
+            
+            if(txStat!=KErrNone)
+                {
+                Logger().WriteFormat(_L("Error in sending packet : %d "), txStat.Int());
+                break;
+                }
+            RDebug::Printf("tx #%d, +%d\n", txCnt, txlen());
+            if(txSize >= KBufferLength)
+                {
+                txSentAll=ETrue;
+                }
+            }
+        
+        // receiving packets
+        if((rxStat.Int() != KRequestPending) && !rxRecvAll)
+            {
+            RDebug::Printf("rx status:%d, ", rxStat.Int());
+            ++rxCnt;
+            
+            sock.RecvOneOrMore(ptrreadbuf, 0, rxStat, rxlen);
+            User::WaitForRequest(rxStat);
+            rxSize += rxlen();
+            
+            if(rxStat!=KErrNone && rxStat!=KErrWouldBlock)
+                {
+                Logger().WriteFormat(_L("Error in receiving packet : %d "), rxStat.Int());
+                break;
+                }
+            RDebug::Printf("rx #%d, +%d\n", rxCnt, rxlen());
+            
+            if(rxSize >= KBufferLength)
+                {
+                rxRecvAll=ETrue;
+                }
+            }
+        }
+    
+    CleanupStack::PopAndDestroy(2, writebuf);   //  writebuf and readbuf    
+    CleanupStack::PopAndDestroy(2); // sock, ss
+    
+    SetTestStepResult(EPass);
+    return TestStepResult();
+    }
+
+// Test step 31.3
+// Sending more than 16k packets.
+// Datagram
+// Blocking mode
+// 
+const TDesC& CSocketTest31_3::GetTestName()
+    {
+    _LIT(ret,"Test31.3");
+    return ret;
+    }
+
+enum TVerdict CSocketTest31_3::InternalDoTestStepL( void )
+    {
+    TVerdict verdict = EPass;
+
+    Logger().WriteFormat(_L("Test Purpose: Repeat send over 64K datagram using TSockXfrLength."));
+
+    // connect to esock
+    Logger().WriteFormat(_L("Attempting to connect to socket server"));
+    RSocketServ ss;
+    
+    // protocol allowing unlimited datagram size
+    TSessionPref pref;
+    pref.iAddrFamily = KDummyAddrFamily;
+    pref.iProtocol = KDummyFive;
+    TInt ret = ss.Connect(pref);
+
+    CleanupClosePushL(ss);
+    Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+
+    Logger().WriteFormat(_L("Finding for dummy protocol 5"));
+    TProtocolDesc protoInfo;
+    ret = ss.FindProtocol(_L("Dummy Protocol 5"), protoInfo);
+    Logger().WriteFormat(_L("FindProtocol returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+
+    Logger().WriteFormat(_L("Opening a socket"));
+    RSocket sock;
+    ret = sock.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol);
+    CleanupClosePushL(sock);
+    Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+
+    TPckgBuf<TUint> lenbuf;
+    Logger().WriteFormat(_L("Getting SendBuf length"));
+    ret = sock.GetOpt(KSOSendBuf, KSOLSocket, lenbuf);
+    Logger().WriteFormat(_L("GetOpt returned %S, length %d"), 
+        &EpocErrorToText(ret), lenbuf());
+    TESTL(KErrNone == ret);
+
+    TUint x(KBufferLength);
+    lenbuf() = x;
+    Logger().WriteFormat(_L("Setting SendBuf length to %d"), lenbuf());
+    ret = sock.SetOpt(KSOSendBuf, KSOLSocket, lenbuf);
+    Logger().WriteFormat(_L("SetOpt returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+
+    Logger().WriteFormat(_L("Getting SendBuf length"));
+    ret = sock.GetOpt(KSOSendBuf, KSOLSocket, lenbuf);
+    Logger().WriteFormat(_L("GetOpt returned %S, length %d"), &EpocErrorToText(ret), lenbuf());
+    TESTL(KErrNone == ret);
+    TESTL(lenbuf() == x);
+    
+    // Force the SendTo to 'flow off'
+   TBool flowOff = ETrue;
+   ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+   Logger().WriteFormat(_L("SetOpt (flow off) returned %S"), &EpocErrorToText(ret));
+   TESTL(KErrNone == ret);
+
+    Logger().WriteFormat(_L("Try sending datagram over protocol allowing unlimited datagram size"));
+    TInetAddr      destAddr;
+    TRequestStatus status;
+
+    // Setting up buffer
+    HBufC8* writebuf = HBufC8::NewMaxLC(KBufferLength);
+    HBufC8* readbuf  = HBufC8::NewMaxLC(KBufferLength);
+   
+    TPtr8 ptrwritebuf(const_cast<TUint8*>(writebuf->Ptr()), KBufferLength);
+    TPtr8 ptrreadbuf(const_cast<TUint8*>(readbuf->Ptr()), KBufferLength);
+   
+    ptrwritebuf.SetLength(ptrwritebuf.MaxLength());
+    ptrreadbuf.SetLength(ptrreadbuf.MaxLength());
+   
+    // Filling buffer
+    ptrwritebuf.Repeat(_L8("Datagram-packet: helloworld"));
+   
+    TRequestStatus txStat;
+    TRequestStatus rxStat;
+    TSockXfrLength txlen;
+    TSockXfrLength rxlen;
+    TInt txSize = 0, txCnt = 0;;
+    TInt rxSize = 0, rxCnt = -1;
+    TBool txSentAll = EFalse;
+    TBool rxRecvAll = EFalse;
+       
+    while(rxSize < KBufferLength)
+        {
+        // sending packets
+        if(txStat.Int() != KRequestPending && !txSentAll)
+            {
+            RDebug::Printf("tx status:%d, ", txStat.Int());
+            TPtrC8 ptrtempbuf(ptrwritebuf.Mid(txSize));
+            sock.SendTo(ptrtempbuf, destAddr, 0, txStat, txlen);
+            
+            // Now enable the write to complete, by ending the 'flow off'
+            flowOff = EFalse;
+            ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+            TESTL(KErrNone == ret);
+            
+            User::WaitForRequest(txStat);
+            ++txCnt;
+            txSize += txlen();
+            
+            if(txStat!=KErrNone)
+                {
+                Logger().WriteFormat(_L("Error in sending packet : %d "), txStat.Int());
+                break;
+                }
+            RDebug::Printf("tx #%d, +%d\n", txCnt, txlen());
+            if(txSize >= KBufferLength)
+                {
+                txSentAll=ETrue;
+                }
+            }
+        
+        // receiving packets
+        if((rxStat.Int() != KRequestPending) && !rxRecvAll)
+            {
+            RDebug::Printf("rx status:%d, ", rxStat.Int());
+            ++rxCnt;
+            
+            ptrreadbuf.Zero();
+            sock.RecvFrom(ptrreadbuf,destAddr, 0, rxStat, rxlen);
+            User::WaitForRequest(rxStat);
+            rxSize += ptrreadbuf.Length();
+            
+            if(rxStat!=KErrNone)
+                {
+                Logger().WriteFormat(_L("Error in receiving packet : %d "), rxStat.Int());
+                break;
+                }
+            RDebug::Printf("rx #%d, +%d\n", rxCnt, ptrreadbuf.Length());
+            
+            if(rxSize >= KBufferLength)
+                {
+                rxRecvAll=ETrue;
+                }
+            }
+        }
+    
+    CleanupStack::PopAndDestroy(2, writebuf);   //  writebuf and readbuf    
+    CleanupStack::PopAndDestroy(2); // sock, ss
+    
+    SetTestStepResult(EPass);
+    return TestStepResult();
+    }
+
+// Test step 31.4
+// Sending more than 16k packets.
+// Datagram
+// Non-Blocking mode
+// 
+const TDesC& CSocketTest31_4::GetTestName()
+    {
+    _LIT(ret,"Test31.4");
+    return ret;
+    }
+
+enum TVerdict CSocketTest31_4::InternalDoTestStepL( void )
+    {
+    TVerdict verdict = EPass;
+
+    Logger().WriteFormat(_L("Test Purpose: Repeat send over 64K datagram using TSockXfrLength."));
+
+    // connect to esock
+    Logger().WriteFormat(_L("Attempting to connect to socket server"));
+    RSocketServ ss;
+    
+    // protocol allowing unlimited datagram size
+    TSessionPref pref;
+    pref.iAddrFamily = KDummyAddrFamily;
+    pref.iProtocol = KDummyFive;
+    TInt ret = ss.Connect(pref);
+
+    CleanupClosePushL(ss);
+    Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+
+    Logger().WriteFormat(_L("Finding for dummy protocol 5"));
+    TProtocolDesc protoInfo;
+    ret = ss.FindProtocol(_L("Dummy Protocol 5"), protoInfo);
+    Logger().WriteFormat(_L("FindProtocol returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+
+    Logger().WriteFormat(_L("Opening a socket"));
+    RSocket sock;
+    ret = sock.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol);
+    CleanupClosePushL(sock);
+    Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+
+    TPckgBuf<TUint> lenbuf;
+    Logger().WriteFormat(_L("Getting SendBuf length"));
+    ret = sock.GetOpt(KSOSendBuf, KSOLSocket, lenbuf);
+    Logger().WriteFormat(_L("GetOpt returned %S, length %d"), 
+        &EpocErrorToText(ret), lenbuf());
+    TESTL(KErrNone == ret);
+
+    TUint x(KBufferLength);
+    lenbuf() = x;
+    Logger().WriteFormat(_L("Setting SendBuf length to %d"), lenbuf());
+    ret = sock.SetOpt(KSOSendBuf, KSOLSocket, lenbuf);
+    Logger().WriteFormat(_L("SetOpt returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+
+    Logger().WriteFormat(_L("Getting SendBuf length"));
+    ret = sock.GetOpt(KSOSendBuf, KSOLSocket, lenbuf);
+    Logger().WriteFormat(_L("GetOpt returned %S, length %d"), &EpocErrorToText(ret), lenbuf());
+    TESTL(KErrNone == ret);
+    TESTL(lenbuf() == x);
+    
+    // Setting option
+    // Force the SendTo to 'flow off'
+    TBool flowOff = ETrue;
+    ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+    Logger().WriteFormat(_L("SetOpt (flow off) returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+    
+    ret = sock.SetOpt(KSONonBlockingIO, KSOLSocket, 1);
+    Logger().WriteFormat(_L("SetOpt NonBlockingIO returned %S"), &EpocErrorToText(ret));
+    TESTL(KErrNone == ret);
+
+    Logger().WriteFormat(_L("Try sending datagram over protocol allowing unlimited datagram size"));
+    TInetAddr      destAddr;
+    TRequestStatus status;
+
+    // Setting up buffer
+    HBufC8* writebuf = HBufC8::NewMaxLC(KBufferLength);
+    HBufC8* readbuf  = HBufC8::NewMaxLC(KBufferLength);
+   
+    TPtr8 ptrwritebuf(const_cast<TUint8*>(writebuf->Ptr()), KBufferLength);
+    TPtr8 ptrreadbuf(const_cast<TUint8*>(readbuf->Ptr()), KBufferLength);
+   
+    ptrwritebuf.SetLength(ptrwritebuf.MaxLength());
+    ptrreadbuf.SetLength(ptrreadbuf.MaxLength());
+   
+    // Filling buffer
+    ptrwritebuf.Repeat(_L8("Datagram-packet: helloworld"));
+   
+    TRequestStatus txStat;
+    TRequestStatus rxStat;
+    TSockXfrLength txlen;
+    TSockXfrLength rxlen;
+    TInt txSize = 0, txCnt = 0;;
+    TInt rxSize = 0, rxCnt = -1;
+    TBool txSentAll = EFalse;
+    TBool rxRecvAll = EFalse;
+       
+    while(rxSize < KBufferLength)
+        {
+        // sending packets
+        if(txStat.Int() != KRequestPending && !txSentAll)
+            {
+            RDebug::Printf("tx status:%d, ", txStat.Int());
+            TPtrC8 ptrtempbuf(ptrwritebuf.Mid(txSize));
+            sock.SendTo(ptrtempbuf, destAddr, 0, txStat, txlen);
+                        
+            // Now enable the write to complete, by ending the 'flow off'
+            flowOff = EFalse;
+            ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+            TESTL(KErrNone == ret);
+            
+            User::WaitForRequest(txStat);
+            ++txCnt;
+            txSize += txlen();
+            
+            if(txStat!=KErrNone)
+                {
+                Logger().WriteFormat(_L("Error in sending packet : %d "), txStat.Int());
+                break;
+                }
+            RDebug::Printf("tx #%d, +%d\n", txCnt, txlen());
+            if(txSize >= KBufferLength)
+                {
+                txSentAll=ETrue;
+                }
+            }
+        
+        // receiving packets
+        if((rxStat.Int() != KRequestPending) && !rxRecvAll)
+            {
+            RDebug::Printf("rx status:%d, ", rxStat.Int());
+            ++rxCnt;
+            
+            ptrreadbuf.Zero();
+            sock.RecvFrom(ptrreadbuf,destAddr, 0, rxStat, rxlen);
+            User::WaitForRequest(rxStat);
+            rxSize += ptrreadbuf.Length();
+            //rxSize += rxlen();
+            
+            if(rxStat!=KErrNone && rxStat!=KErrWouldBlock)
+                {
+                Logger().WriteFormat(_L("Error in receiving packet : %d "), rxStat.Int());
+                break;
+                }
+            RDebug::Printf("rx #%d, +%d\n", rxCnt, ptrreadbuf.Length());
+            
+            if(rxSize >= KBufferLength)
+                {
+                rxRecvAll=ETrue;
+                }
+            }
+        }
+    
+    CleanupStack::PopAndDestroy(2, writebuf);   //  writebuf and readbuf    
+    CleanupStack::PopAndDestroy(2); // sock, ss
+    
+    SetTestStepResult(EPass);
+    return TestStepResult();
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_Socket/SocketTestSection31.h	Tue Jan 26 13:09:14 2010 +0200
@@ -0,0 +1,55 @@
+// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This is the header file for ESOCK basic socket test section 31
+// 
+//
+
+
+#if (!defined __SOCKETTEST_31_H__)
+#define __SOCKETTEST_31_H__
+
+#include "TestStepSocket.h"
+
+class CSocketTest31_1 : public CTestStepSocket
+    {
+    public:
+        static const TDesC &GetTestName();
+        virtual enum TVerdict InternalDoTestStepL( void );
+    };
+
+class CSocketTest31_2 : public CTestStepSocket
+    {
+    public:
+        static const TDesC &GetTestName();
+        virtual enum TVerdict InternalDoTestStepL( void );
+    };
+
+class CSocketTest31_3 : public CTestStepSocket
+    {
+    public:
+        static const TDesC &GetTestName();
+        virtual enum TVerdict InternalDoTestStepL( void );
+    };
+
+class CSocketTest31_4 : public CTestStepSocket
+    {
+    public:
+        static const TDesC &GetTestName();
+        virtual enum TVerdict InternalDoTestStepL( void );
+    };
+
+
+#endif //__SOCKETTEST_31_H__
+
+
--- a/datacommsserver/esockserver/test/TE_Socket/TestSuiteSocket.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_Socket/TestSuiteSocket.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -43,6 +43,7 @@
 #include "SocketTestSection19.h"
 #include "SocketTestSection20.h"
 #include "SocketTestSection21.h"
+#include "SocketTestSection31.h"
 
 _LIT(KServerName,"TE_Socket");
 
@@ -225,6 +226,11 @@
 		ADD_TEST_STEP(CSocketTest20_5)
 		ADD_TEST_STEP(CSocketTest21_1)		
 		ADD_TEST_STEP(CSocketTest21_2)
+		
+		ADD_TEST_STEP(CSocketTest31_1)
+		ADD_TEST_STEP(CSocketTest31_2)
+		ADD_TEST_STEP(CSocketTest31_3)
+		ADD_TEST_STEP(CSocketTest31_4)
 	END_TEST_STEP_LIST
 	}
 
--- a/datacommsserver/esockserver/test/TE_Socket/group/TE_Socket.mmp	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_Socket/group/TE_Socket.mmp	Tue Jan 26 13:09:14 2010 +0200
@@ -46,7 +46,8 @@
 SOURCE        SocketTestSection18.cpp
 SOURCE        SocketTestSection19.cpp
 SOURCE        SocketTestSection20.cpp
-SOURCE		  SocketTestSection21.cpp
+SOURCE		  SocketTestSection21.cpp 
+SOURCE		  SocketTestSection31.cpp 
 
 USERINCLUDE   	../../protocols/pdummy
 
--- a/datacommsserver/esockserver/test/TE_Socket/scriptfiles/te_socket_tests.script	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_Socket/scriptfiles/te_socket_tests.script	Tue Jan 26 13:09:14 2010 +0200
@@ -492,3 +492,67 @@
 RUN_TEST_STEP 100 TE_Socket Test21.2
 TEST_COMPLETE
 END_TESTCASE			COMINF-ESOCK-Socket-0171
+
+START_TESTCASE			COMINF-ESOCK-Socket-0172
+//! @SYMTestCaseID		COMINF-ESOCK-Socket-0172
+//! @SYMTestCaseDesc    	Sending more than 60k packet by Stream protocol with blocking mode
+//! @SYMTestActions    		RSocket::Send
+//! @SYMTestExpectedResults     pass
+//! @SYMTestPriority  		Critical 
+//! @SYMTestType 		CT
+//! @SYMComponent   		comms-infras_esock
+//! @SYMDEF				DEF143021
+
+// run test 31.1
+PRINT
+RUN_TEST_STEP 100 TE_Socket Test31.1
+TEST_COMPLETE
+END_TESTCASE			COMINF-ESOCK-Socket-0172
+
+START_TESTCASE			COMINF-ESOCK-Socket-0173
+//! @SYMTestCaseID		COMINF-ESOCK-Socket-0173
+//! @SYMTestCaseDesc    	Sending more than 60k packet by Stream protocol with non-blocking mode
+//! @SYMTestActions    		RSocket::Send
+//! @SYMTestExpectedResults     pass
+//! @SYMTestPriority  		Critical 
+//! @SYMTestType 		CT
+//! @SYMComponent   		comms-infras_esock
+//! @SYMDEF				DEF143021
+
+// run test 31.2
+PRINT
+RUN_TEST_STEP 100 TE_Socket Test31.2
+TEST_COMPLETE
+END_TESTCASE			COMINF-ESOCK-Socket-0173
+
+START_TESTCASE			COMINF-ESOCK-Socket-0174
+//! @SYMTestCaseID		COMINF-ESOCK-Socket-0174
+//! @SYMTestCaseDesc    	Sending more than 60k packet by datagram protocol with blocking mode
+//! @SYMTestActions    		RSocket::SendTo
+//! @SYMTestExpectedResults     pass
+//! @SYMTestPriority  		Critical 
+//! @SYMTestType 		CT
+//! @SYMComponent   		comms-infras_esock
+//! @SYMDEF				DEF143021
+
+// run test 31.3
+PRINT
+RUN_TEST_STEP 100 TE_Socket Test31.3
+TEST_COMPLETE
+END_TESTCASE			COMINF-ESOCK-Socket-0174
+
+START_TESTCASE			COMINF-ESOCK-Socket-0175
+//! @SYMTestCaseID		COMINF-ESOCK-Socket-0175
+//! @SYMTestCaseDesc    	Sending more than 60k packet by Stream protocol with non-blocking mode
+//! @SYMTestActions    		RSocket::SendTo
+//! @SYMTestExpectedResults     pass
+//! @SYMTestPriority  		Critical 
+//! @SYMTestType 		CT
+//! @SYMComponent   		comms-infras_esock
+//! @SYMDEF				DEF143021
+
+// run test 31.4
+PRINT
+RUN_TEST_STEP 100 TE_Socket Test31.4
+TEST_COMPLETE
+END_TESTCASE			COMINF-ESOCK-Socket-0175
--- a/datacommsserver/esockserver/test/protocols/pdummy/PDUMMY.CPP	Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/protocols/pdummy/PDUMMY.CPP	Tue Jan 26 13:09:14 2010 +0200
@@ -1035,16 +1035,15 @@
 		return 0;
 		}
 
-	// From opposite angle, we dont need a new chain if it is a stream
-	// we just append to the existing, unless there isn't an existing...
-	if(iDataArray->Count()==0 || IsTransportType(KSockDatagram))
+	// add a new chain for storing data
+	if(iDataArray->Count()==0 ||( iDataArray->Count()>0 && !iDataArray->At(iDataArray->Count()-1).IsEmpty()))
 		{
 		RMBufChain chain;
 		TRAPD(ret, iDataArray->AppendL(chain));
 		if(ret!=KErrNone)
 			return ret;
 		}
-
+	
 	iDataArray->At(iDataArray->Count()-1).Append(aData);
 
 	// Gotta save the length of the chain before calling
Binary file datacommsserver/networkcontroller/Documentation/Network_Controller_Design.doc has changed
Binary file datacommsserver/networkcontroller/Documentation/Network_Controller_Unit_Test_Specification.doc has changed
Binary file datacommsserver/networkcontroller/Documentation/SGL.GT0161.208 Mobile IP to Simple IP Fallback.doc has changed
Binary file datacommsserver/networkcontroller/Documentation/SGL.GT0161.211 Mobile IP to Simple IP Fallback Mechanism Design.doc has changed
Binary file datacommsserver/networkcontroller/Documentation/SGL.GT0161.305 Mobile IP to Simple IP Fallback Mechanism Test Specification.doc has changed
Binary file datacommsserver/networkingdialogapi/Documentation/Dialog_API_Specification.doc has changed
Binary file datacommsserver/networkingdialogapi/Documentation/Dialog_Design.doc has changed
Binary file datacommsserver/networkingdialogapi/Documentation/Dialog_Test_Specification.doc has changed
Binary file serialserver/c32serialserver/Test/TE_C32/documentation/C32_How_to_test.doc has changed
Binary file serialserver/c32serialserver/Test/TE_C32/documentation/C32_Test_Specification.doc has changed
Binary file serialserver/c32serialserver/Test/TE_C32/documentation/C32_Unit_Test_Specification.doc has changed
Binary file serialserver/c32serialserver/Test/te_C32Performance/Documentation/C32 Performance Test Design.doc has changed
Binary file serialserver/c32serialserver/documentation/C32API.doc has changed
Binary file serialserver/c32serialserver/documentation/C32_Design_Document.doc has changed
Binary file serialserver/c32serialserver/documentation/C32_Design_Document_v1.doc has changed
Binary file serialserver/c32serialserver/documentation/C32_Heap_Check_Migration.doc has changed
Binary file serialserver/c32serialserver/documentation/How_To_configure_C32.doc has changed
Binary file serialserver/c32serialserverdocs/SerComms_Subsystem_Architectural_Description.doc has changed
Binary file serialserver/c32serialserverdocs/SerComms_Subsystem_Functional_Specification.doc has changed
Binary file serialserver/c32serialserverdocs/SerComms_Subsystem_Release_Note.doc has changed
Binary file serialserver/packetloopbackcsy/Documentation/PacketLoopbackCsy_Design_Document.doc has changed
--- a/serialserver/packetloopbackcsy/src/LoopbackConfig.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/serialserver/packetloopbackcsy/src/LoopbackConfig.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -64,6 +64,8 @@
 	{	
 	RFs fs;
 	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+	
 	CTestConfig* configFile = CTestConfig::NewLC(fs, KConfigFileDir, KLoopbackConfigFilename);
 	
 	TBuf8<KMaxName> sectionName;
@@ -164,6 +166,7 @@
 		}
 	
 	CleanupStack::PopAndDestroy(configFile);
+    CleanupStack::PopAndDestroy(); // RFs handle
 	}
 
 /**
--- a/serialserver/packetloopbackcsy/src/loopback.cpp	Fri Jan 22 10:58:59 2010 +0200
+++ b/serialserver/packetloopbackcsy/src/loopback.cpp	Tue Jan 26 13:09:14 2010 +0200
@@ -1012,6 +1012,9 @@
  * This method is the destructor for the factory object.
  */
 	{
+    ASSERT(iPorts.Count()==0);
+    iPorts.Close();
+    
 	delete iLoopbackConfig;
 	iLoopbackConfig = NULL;
 	LOGDESTROY();