Split the proxy thread into multiple threads: one for accepting connections and one for doing the actual proxying.  This lets me proxy multiple sockets that connect to the same port.
Split the proxy thread into multiple threads: one for accepting connections and one for doing the actual proxying.  This lets me proxy multiple sockets that connect to the same port.

brettdh/libcmm,brettdh/libcmm,brettdh/libcmm,brettdh/libcmm,brettdh/libcmm