--- 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);
}