@@ -1849,22 +1849,28 @@ static void l2cap_chan_sdu_sent(struct bt_conn *conn, void *user_data, int err)
1849
1849
{
1850
1850
struct l2cap_tx_meta_data * data = user_data ;
1851
1851
struct bt_l2cap_chan * chan ;
1852
- bt_conn_tx_cb_t cb ;
1853
- void * cb_user_data ;
1852
+ bt_conn_tx_cb_t cb = data -> cb ;
1853
+ void * cb_user_data = data -> user_data ;
1854
+ uint16_t cid = data -> cid ;
1854
1855
1855
- BT_DBG ("conn %p CID 0x%04x" , conn , data -> cid );
1856
+ BT_DBG ("conn %p CID 0x%04x err %d " , conn , cid , err );
1856
1857
1857
- chan = bt_l2cap_le_lookup_tx_cid (conn , data -> cid );
1858
+ free_tx_meta_data (data );
1859
+
1860
+ if (err ) {
1861
+ if (cb ) {
1862
+ cb (conn , cb_user_data , err );
1863
+ }
1864
+
1865
+ return ;
1866
+ }
1867
+
1868
+ chan = bt_l2cap_le_lookup_tx_cid (conn , cid );
1858
1869
if (!chan ) {
1859
1870
/* Received SDU sent callback for disconnected channel */
1860
1871
return ;
1861
1872
}
1862
1873
1863
- cb = data -> cb ;
1864
- cb_user_data = data -> user_data ;
1865
-
1866
- free_tx_meta_data (data );
1867
-
1868
1874
if (chan -> ops -> sent ) {
1869
1875
chan -> ops -> sent (chan );
1870
1876
}
@@ -1881,7 +1887,11 @@ static void l2cap_chan_seg_sent(struct bt_conn *conn, void *user_data, int err)
1881
1887
struct l2cap_tx_meta_data * data = user_data ;
1882
1888
struct bt_l2cap_chan * chan ;
1883
1889
1884
- BT_DBG ("conn %p CID 0x%04x" , conn , data -> cid );
1890
+ BT_DBG ("conn %p CID 0x%04x err %d" , conn , data -> cid , err );
1891
+
1892
+ if (err ) {
1893
+ return ;
1894
+ }
1885
1895
1886
1896
chan = bt_l2cap_le_lookup_tx_cid (conn , data -> cid );
1887
1897
if (!chan ) {
0 commit comments