ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
1190590 Топик полностью
Dingo (21.03.2022 12:07, просмотров: 352) ответил Dingo на Кто о чём, а Dingo о LwIP - падает TCP client с сообщением memp_malloc: out of memory in pool PBUF_POOL
Не получает подтверждения. 

Сделал вывод вспомогательной инфы

void tcp_go( struct tcp_pcb *t)
{
	printf(", %hu",  t->snd_buf );
	printf(", %hu",  t->snd_queuelen );
	printf(", [%hu",  t->unsent->len );
	printf(", %hu",  t->unacked->len );
	printf(", %hu]",  t->ooseq->len );
	printf(".\r\n");
}

Хорошая жизнь заканчивается таким комбо:

{L177:4 0} , 1440, 4, [1460, 29777, 29777]. {L177:4 0} , 416, 4, [1044, 1460, 29777]. {L177:4 0} , 1744, 4, [1460, 29777, 29777]. {L177:4 0} , 720, 5, [1460, 29777, 29777]. {L177:6 1} , 720, 5, [1460, 29777, 29777]. {L177:6 2} , 720, 5, [1460, 29777, 29777]. {L177:6 3} , 720, 5, [1460, 29777, 29777]. memp_malloc: out of memory in pool PBUF_POOL

То, что в фигурных скобках - номер строки исходника, код флагов события(аномальщины), потом буфер отправки, длина очереди, а потом длины имеющегося, неподтверждённого, вне последовательности.

Можно как-то попросить LwIP отправлять заново пакеты при превышении значения в буфере выше заданного? Или такие вопросы лучше к авторам либы?

Насколько вероятно, что виндовый порт netcat проморгал пришедшие пакеты и потому не отправил ACK?