From: zzy Date: Tue, 14 May 2013 00:34:41 +0000 (-0700) Subject: Added available size check to fix zero byte data available issue X-Git-Tag: android-x86-7.1-r1~1956^2~3^2~5 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=ebef4763b36b05370d13dfd27c4fcaa9095dbeff;p=android-x86%2Fsystem-bt.git Added available size check to fix zero byte data available issue Bug 8950703 rfcomm connection failed in case zero byte data available --- diff --git a/stack/rfcomm/port_api.c b/stack/rfcomm/port_api.c index 325d8fa07..cba153e23 100644 --- a/stack/rfcomm/port_api.c +++ b/stack/rfcomm/port_api.c @@ -1437,6 +1437,8 @@ int PORT_WriteDataCO (UINT16 handle, int* p_len) RFCOMM_TRACE_ERROR1("p_data_co_callback DATA_CO_CALLBACK_TYPE_INCOMING_SIZE failed, available:%d", available); return (PORT_UNKNOWN_ERROR); } + if(available == 0) + return PORT_SUCCESS; /* Length for each buffer is the smaller of GKI buffer, peer MTU, or max_len */ length = RFCOMM_DATA_POOL_BUF_SIZE - (UINT16)(sizeof(BT_HDR) + L2CAP_MIN_OFFSET + RFCOMM_DATA_OVERHEAD); @@ -1455,6 +1457,7 @@ int PORT_WriteDataCO (UINT16 handle, int* p_len) { error("p_data_co_callback DATA_CO_CALLBACK_TYPE_OUTGOING failed, available:%d", available); + PORT_SCHEDULE_UNLOCK; return (PORT_UNKNOWN_ERROR); } //memcpy ((UINT8 *)(p_buf + 1) + p_buf->offset + p_buf->len, p_data, max_len);