static void handle_fd_connecting (DskFileDescriptor fd, unsigned events, void *callback_data) { int err = dsk_errno_from_fd (fd); DskClientStream *stream = callback_data; DSK_UNUSED (events); if (err == 0) { stream->is_connecting = DSK_FALSE; stream->is_connected = DSK_TRUE; handle_fd_connected (stream); /* sets the watch on the fd */ return; } if (err != EINTR && err != EAGAIN) { dsk_octet_stream_set_last_error (&stream->base_instance, "error finishing connection to %s: %s", stream->name, strerror (err)); dsk_dispatch_close_fd (dsk_dispatch_default (), stream->fd); stream->fd = -1; stream->is_connecting = DSK_FALSE; maybe_set_autoreconnect_timer (stream); return; } /* wait for another notification */ return; }
void dsk_main_close_fd (DskFileDescriptor fd) { dsk_dispatch_close_fd (dsk_dispatch_default (), fd); }