mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-27 11:48:32 +00:00
* We don't have to lock the "all IPv4 sockets" in exclusive mode, shared mode is enough for just reading the list (as opposed to modifying it). * We don't have to lock socket's own lock at all, the IPv4Socket::did_receive() implementation takes care of this. * Most importantly, we don't have to hold the "all IPv4 sockets" across the IPv4Socket::did_receive() call(s). We can copy the current ICMP socket list while holding the lock, then release the lock, and then call IPv4Socket::did_receive() on all the ICMP sockets in our list. These changes fix a deadlock triggered by receiving ICMP messages when using tap networking setup (as opposed to QEMU's default user/SLIRP networking) on the host.
26 KiB
26 KiB