Unix.set_nonblock fd;
if conn_state.recv_enabled then
Unixext.Fdset.set t.readers fd;
+ if conn_state.send_enabled then
+ Unixext.Fdset.set t.writers fd;
fd
let remove_conn t handle =
cs.status <- Connected;
if not cs.recv_enabled then
Unixext.Fdset.clear t.readers fd;
+ if not cs.send_enabled then
+ Unixext.Fdset.clear t.writers fd;
cs.callbacks.connect_callback t fd
| Some err ->
cs.callbacks.error_callback t fd (err, "connect", "")
(match Unix.getsockopt_error fd with
| None ->
cs.status <- Connected;
- if cs.recv_enabled then
- Unixext.Fdset.set t.readers fd
- else
+ if not cs.recv_enabled then
Unixext.Fdset.clear t.readers fd;
+ if not cs.send_enabled then
+ Unixext.Fdset.clear t.writers fd;
cs.callbacks.connect_callback t fd
| Some err ->
cs.callbacks.error_callback t fd (err, "connect", "")