diff --git a/src/classic/rfcomm.c b/src/classic/rfcomm.c index cafb290a2..b831caee3 100644 --- a/src/classic/rfcomm.c +++ b/src/classic/rfcomm.c @@ -2550,10 +2550,12 @@ uint8_t rfcomm_create_channel(btstack_packet_handler_t packet_handler, bd_addr_t } uint8_t rfcomm_disconnect(uint16_t rfcomm_cid){ - log_info("disconnect cid 0x%02x", rfcomm_cid); rfcomm_channel_t * channel = rfcomm_channel_for_rfcomm_cid(rfcomm_cid); if (!channel) return ERROR_CODE_UNKNOWN_CONNECTION_IDENTIFIER; + if (channel->state != RFCOMM_CHANNEL_OPEN) return ERROR_CODE_COMMAND_DISALLOWED; + + log_info("disconnect cid 0x%02x", rfcomm_cid); channel->state = RFCOMM_CHANNEL_SEND_DISC; l2cap_request_can_send_now_event(channel->multiplexer->l2cap_cid); return ERROR_CODE_SUCCESS;