Tor does not convert TCP socket exhaustion to END_STREAM_REASON_RESOURCELIMIT
Moritz has reported the appearance of warns to the effect of "[warn] Error binding network socket: Address already in use" recently as a result of the PID feedback experiment. We could implement a feedback cap for nodes that hit this exhaustion, if we could detect it using stream end reasons (legacy/trac#4709 (moved)).
However, in errno_to_stream_end_reason(), it looks like Tor does not have a case covering "Address already in use" (EADDRINUSE and possibly also EADDRNOTAVAIL), which seems to be the errno Moritz's Ubuntu server is choosing when it runs out of TCP source ports.
I'd add these cases myself, but I am not sure if it should be an E_CASE or S_CASE, and I'm also not sure if the TCP source port exhaustion errno is always the same EADDRINUSE across all platforms, or just on Linux. It seems like a weird choice to me.