Exemple #1
0
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;
}
Exemple #2
0
void              dsk_main_close_fd        (DskFileDescriptor   fd)
{
  dsk_dispatch_close_fd (dsk_dispatch_default (), fd);
}