Skip to content

Commit b171a7b

Browse files
committed
Merge branch 'fix-crash-on-fin-v2'
2 parents 08108c2 + 15356c3 commit b171a7b

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

src/AsyncTCP.cpp

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ typedef struct {
7979
static xQueueHandle _async_queue;
8080
static TaskHandle_t _async_service_task_handle = NULL;
8181
const int _number_of_closed_slots = 16;
82-
static int _closed_index = 1;
83-
static int _closed_slots[_number_of_closed_slots] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 };
82+
static int _closed_index = 0;
83+
static int _closed_slots[_number_of_closed_slots];
8484

8585
static inline bool _init_async_event_queue(){
8686
if(!_async_queue){
@@ -555,11 +555,18 @@ AsyncClient::AsyncClient(tcp_pcb* pcb)
555555
_closed_slot = -1;
556556
if(_pcb){
557557
_closed_slot = 0;
558-
int closed_slot_min_index = _closed_slots[0];
559-
for (int i = 0; i < _number_of_closed_slots; ++ i) {
560-
if (_closed_slots[i] <= closed_slot_min_index && _closed_slots[i] != 0) {
561-
closed_slot_min_index = _closed_slots[i];
562-
_closed_slot = i;
558+
if (_closed_index == 0) {
559+
_closed_index = 1;
560+
for (int i = 0; i < _number_of_closed_slots; ++ i) {
561+
_closed_slots[i] = 1;
562+
}
563+
} else {
564+
int closed_slot_min_index = _closed_slots[0];
565+
for (int i = 0; i < _number_of_closed_slots; ++ i) {
566+
if (_closed_slots[i] <= closed_slot_min_index && _closed_slots[i] != 0) {
567+
closed_slot_min_index = _closed_slots[i];
568+
_closed_slot = i;
569+
}
563570
}
564571
}
565572
_closed_slots[_closed_slot] = 0;

0 commit comments

Comments
 (0)