bluetooth/btstack/avdtp/avdtpStreamStates.cpp
changeset 16 0089b2f7ebd8
parent 0 29b1cd4cb562
child 34 9d84592f5036
--- a/bluetooth/btstack/avdtp/avdtpStreamStates.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btstack/avdtp/avdtpStreamStates.cpp	Fri Mar 19 09:53:48 2010 +0200
@@ -909,13 +909,17 @@
 // 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);
-		
-		// no need to tell signalling session as Opening is not available to RGavdp
+		// 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);
 		}