b248ede2ef
In case we requeued a packet that was the head of a longer session queue, we failed to restore this ordering. Also, we did not properly deal with changes to Slirp::next_m. Instead of a cumbersome roll back, this fix simply avoids any changes until we know if the packet was actually sent. Both fixes crashes due to inconsistent queues and simplifies the logic. Thanks to Zhi Yong Wu who found the reason for these crashes. CC: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com> CC: Fabien Chouteau <chouteau@adacore.com> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> |
||
---|---|---|
.. | ||
arp_table.c | ||
bootp.c | ||
bootp.h | ||
cksum.c | ||
COPYRIGHT | ||
debug.h | ||
if.c | ||
if.h | ||
ip_icmp.c | ||
ip_icmp.h | ||
ip_input.c | ||
ip_output.c | ||
ip.h | ||
libslirp.h | ||
main.h | ||
mbuf.c | ||
mbuf.h | ||
misc.c | ||
misc.h | ||
sbuf.c | ||
sbuf.h | ||
slirp_config.h | ||
slirp.c | ||
slirp.h | ||
socket.c | ||
socket.h | ||
tcp_input.c | ||
tcp_output.c | ||
tcp_subr.c | ||
tcp_timer.c | ||
tcp_timer.h | ||
tcp_var.h | ||
tcp.h | ||
tcpip.h | ||
tftp.c | ||
tftp.h | ||
udp.c | ||
udp.h |