Rename quic_lstnr_dgram_read() to quic_lstnr_dgram_dispatch() to reflect its new role. After calling this latter, the sock i/o handler must consume the buffer only if the datagram it received is detected as wrong by quic_lstnr_dgram_dispatch(). The datagram handler task mark the datagram as consumed atomically setting ->buf to NULL value. The sock i/o handler is responsible of flushing its RX buffer before using it. It also keeps a datagram among the consumed ones so that to pass it to quic_lstnr_dgram_dispatch() and prevent it from allocating a new one.