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