static void cleanup_rfc_slot(rfc_slot_t* rs) { APPL_TRACE_DEBUG4("cleanup slot:%d, fd:%d, scn:%d, sdp_handle:0x%x", rs->id, rs->fd, rs->scn, rs->sdp_handle); if(rs->fd != -1) { shutdown(rs->fd, 2); close(rs->fd); rs->fd = -1; } if(rs->app_fd != -1) { close(rs->app_fd); rs->app_fd = -1; } if(rs->sdp_handle > 0) { del_rfc_sdp_rec(rs->sdp_handle); rs->sdp_handle = 0; } if(rs->rfc_handle && !rs->f.closing && !rs->f.server) { APPL_TRACE_DEBUG1("closing rfcomm connection, rfc_handle:0x%x", rs->rfc_handle); BTA_JvRfcommClose(rs->rfc_handle, (void*)rs->id); rs->rfc_handle = 0; } free_rfc_slot_scn(rs); free_gki_que(&rs->incoming_que); rs->rfc_port_handle = 0; //cleanup the flag memset(&rs->f, 0, sizeof(rs->f)); rs->id = 0; }
static void cleanup_rfc_slot(rfc_slot_t *slot) { if (slot->fd != INVALID_FD) { shutdown(slot->fd, SHUT_RDWR); close(slot->fd); slot->fd = INVALID_FD; } if (slot->app_fd != INVALID_FD) { close(slot->app_fd); slot->app_fd = INVALID_FD; } if (slot->sdp_handle > 0) { del_rfc_sdp_rec(slot->sdp_handle); slot->sdp_handle = 0; } if (slot->rfc_handle && !slot->f.closing && !slot->f.server) { BTA_JvRfcommClose(slot->rfc_handle, (void *)(uintptr_t)slot->id); slot->rfc_handle = 0; } free_rfc_slot_scn(slot); list_clear(slot->incoming_queue); slot->rfc_port_handle = 0; memset(&slot->f, 0, sizeof(slot->f)); slot->id = 0; slot->scn_notified = false; }