diff options
author | Johan Hedberg <johan.hedberg@nokia.com> | 2008-10-19 21:51:07 +0300 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@nokia.com> | 2008-10-19 21:51:07 +0300 |
commit | 95f8efcebacc3cc86f96d447f366100f9c8abd9e (patch) | |
tree | a77d8c9943b26015d4f820ec36c948497b4a3ed6 /audio | |
parent | a1ac214c97e81fefc4393fdfea0e5c9041f75bdd (diff) |
Check for existing STREAMING state when receiving START_RSP
This could happen if both peers send START_CMD at the same time and the
SNK peer doesn't reject the command (as it should according to the
spec). This behaviour can be seen e.g. when using pulseaudio and the
Mororola S9 headset.
Diffstat (limited to 'audio')
-rw-r--r-- | audio/avdtp.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/audio/avdtp.c b/audio/avdtp.c index 361c5eee..87e19cca 100644 --- a/audio/avdtp.c +++ b/audio/avdtp.c @@ -1922,7 +1922,10 @@ static gboolean avdtp_start_resp(struct avdtp *session, if (sep->cfm && sep->cfm->start) sep->cfm->start(session, sep, stream, NULL, sep->user_data); - avdtp_sep_set_state(session, sep, AVDTP_STATE_STREAMING); + /* We might be in STREAMING already if both sides send START_CMD at the + * same time and the one in SNK role doesn't reject it as it should */ + if (sep->state != AVDTP_STATE_STREAMING) + avdtp_sep_set_state(session, sep, AVDTP_STATE_STREAMING); return TRUE; } |