bluetooth/btstack/avdtp/avdtpStreamStates.cpp
branchRCL_3
changeset 8 2b6718f05bdb
parent 0 29b1cd4cb562
child 22 786b94c6f0a4
--- a/bluetooth/btstack/avdtp/avdtpStreamStates.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btstack/avdtp/avdtpStreamStates.cpp	Fri Feb 19 23:56:55 2010 +0200
@@ -909,12 +909,16 @@
 // now we kick TCs into life
 	if (aResult)
 		{
-		// can return to Idle, user could try this operation again
-		// the way Open works means we have transport sessions interested in result of this
-		// they need to tell their sockets that their connects failed
-		
-		ChangeState(aStream, CAVStreamStateFactory::EStreamStateIdle);
-		
+		// late reply or connection problem, abort
+
+		CSignallingChannel* sigch = aStream.iProtocol.FindSignallingChannel(aStream.iRemoteAddress.BTAddr());
+		// should always have sigch here
+		__ASSERT_DEBUG(sigch, PanicInState(EAvdtpSignallingChannelShouldExist));
+		if (sigch)
+			{
+			sigch->SendAbort(aStream, aStream.RemoteSEID());
+			}
+	
 		// no need to tell signalling session as Opening is not available to RGavdp
 		// Opening is performed when the necessary sockets are created and connected in a stream
 		aStream.NotifyUserPlaneTransportSessionsError(NULL, aResult);