Each network thread holds an array of locks, indexed by a hash of fd. When we accept a connection we hold a lock in accepting thread. We then generate the thread number and lock bucket for the new connection socket - if we hit the same thread and lock bucket as accepting socket we get a deadlock. Avoid this by checking if we're in the same thread/lock bucket and not locking in this case.
(cherry picked from commit 75815c15)