--- a/bluetoothengine/bteng/src/btengpairman.cpp Fri Feb 19 22:59:18 2010 +0200
+++ b/bluetoothengine/bteng/src/btengpairman.cpp Fri Mar 12 15:43:23 2010 +0200
@@ -134,6 +134,10 @@
iPairingServ->Close();
delete iPairingServ;
}
+ if ( !iMessage.IsNull() )
+ {
+ iMessage.Complete( KErrCancel );
+ }
TRACE_FUNC_EXIT
}
@@ -156,14 +160,24 @@
}
case EBTEngPairDevice:
{
+ if ( !iMessage.IsNull() )
+ {
+ User::Leave( KErrServerBusy );
+ }
TBTDevAddrPckgBuf addrPkg;
aMessage.ReadL( KBTEngAddrSlot, addrPkg );
PairDeviceL( addrPkg(), aMessage.Int1() );
+ iMessage = RMessage2( aMessage );
break;
}
case EBTEngCancelPairDevice:
{
- CancelCommand( opcode );
+ // Only the client who requested pairing can cancel it:
+ if ( !iMessage.IsNull() && aMessage.Session() == iMessage.Session() )
+ {
+ iPairer->CancelOutgoingPair();
+ iMessage.Complete( KErrCancel );
+ }
break;
}
default:
@@ -177,27 +191,6 @@
}
// ---------------------------------------------------------------------------
-// Cancels outgoing pairing requests
-// ---------------------------------------------------------------------------
-//
-void CBTEngPairMan::CancelCommand( TInt aOpCode )
- {
- switch( aOpCode )
- {
- case EBTEngPairDevice:
- {
- TRACE_FUNC_ENTRY
- if ( iPairer )
- {
- iPairer->CancelOutgoingPair();
- }
- TRACE_FUNC_EXIT
- break;
- }
- }
- }
-
-// ---------------------------------------------------------------------------
// Handle a change in BTRegistry remote devices table.
// ---------------------------------------------------------------------------
//
@@ -228,7 +221,7 @@
//
RSocketServ& CBTEngPairMan::SocketServ()
{
- return iServer.SocketServ();
+ return iServer.SocketServer();
}
// ---------------------------------------------------------------------------
@@ -237,7 +230,7 @@
//
RBTRegServ& CBTEngPairMan::BTRegServ()
{
- return iServer.BTRegServ();
+ return iServer.RegistrServer();
}
// ---------------------------------------------------------------------------
@@ -265,13 +258,23 @@
aErr = KErrNone;
}
// we must complete client's pairing request:
- iServer.iSessionIter.SetToLast();
- CBTEngSrvSession* session = (CBTEngSrvSession*) iServer.iSessionIter--;
- TInt ret( KErrNotFound );
- while( session && ret )
+ if ( !iMessage.IsNull() )
{
- ret = session->CompletePairRequest( aErr );
- session = (CBTEngSrvSession*) iServer.iSessionIter--;
+ iMessage.Complete( aErr );
+ }
+ TRACE_FUNC_EXIT
+ }
+
+// ---------------------------------------------------------------------------
+// A session will be ended, completes the pending request for this session.
+// ---------------------------------------------------------------------------
+//
+void CBTEngPairMan::SessionClosed( CSession2* aSession )
+ {
+ TRACE_FUNC_ARG( ( _L( " session %x"), aSession ) )
+ if ( !iMessage.IsNull() && iMessage.Session() == aSession )
+ {
+ iMessage.Complete( KErrCancel );
}
TRACE_FUNC_EXIT
}