split opensocket into input and output

trying to fix blocking on socket input being opened
this will probably be rolled back