From 4b25b3581dc9f8cb6aed6a3490ae292d4d8d8cd4 Mon Sep 17 00:00:00 2001 From: graynode Date: Fri, 24 Oct 2025 10:09:02 -0400 Subject: [PATCH] updated per PR input --- bumble/rfcomm.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/bumble/rfcomm.py b/bumble/rfcomm.py index 18eea065..fba2e0f8 100644 --- a/bumble/rfcomm.py +++ b/bumble/rfcomm.py @@ -671,15 +671,17 @@ class DLC(utils.EventEmitter): def process_tx(self) -> None: # Send anything we can (or an empty frame if we need to send rx credits) rx_credits_needed = self.rx_credits_needed() - while (self.tx_buffer and self.tx_credits > 0) or ( - rx_credits_needed > 0 and self.tx_credit > 0 - ): + while (self.tx_buffer and self.tx_credits > 0) or rx_credits_needed > 0: # Get the next chunk, up to MTU size if rx_credits_needed > 0: - chunk = bytes([rx_credits_needed]) + self.tx_buffer[: self.mtu - 1] - self.tx_buffer = self.tx_buffer[len(chunk) - 1 :] + chunk = bytes([rx_credits_needed]) self.rx_credits += rx_credits_needed - tx_credit_spent = len(chunk) > 1 + if self.tx_buffer and self.tx_credits > 0: + chunk += self.tx_buffer[: self.mtu - 1] + self.tx_buffer = self.tx_buffer[len(chunk) - 1 :] + tx_credit_spent = True + else: + tx_credit_spent = False else: chunk = self.tx_buffer[: self.mtu] self.tx_buffer = self.tx_buffer[len(chunk) :]