Diff for /embedaddon/lighttpd/src/fdevent.c between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2013/10/14 10:32:47 version 1.1.1.2, 2014/06/15 20:20:06
Line 23  fdevents *fdevent_init(server *srv, size_t maxfds, fde Line 23  fdevents *fdevent_init(server *srv, size_t maxfds, fde
         switch(type) {          switch(type) {
         case FDEVENT_HANDLER_POLL:          case FDEVENT_HANDLER_POLL:
                 if (0 != fdevent_poll_init(ev)) {                  if (0 != fdevent_poll_init(ev)) {
                        log_error_write(ev->srv, __FILE__, __LINE__, "S",                        log_error_write(srv, __FILE__, __LINE__, "S",
                                 "event-handler poll failed");                                  "event-handler poll failed");
                        goto error;
                        return NULL; 
                 }                  }
                 return ev;                  return ev;
         case FDEVENT_HANDLER_SELECT:          case FDEVENT_HANDLER_SELECT:
                 if (0 != fdevent_select_init(ev)) {                  if (0 != fdevent_select_init(ev)) {
                        log_error_write(ev->srv, __FILE__, __LINE__, "S",                        log_error_write(srv, __FILE__, __LINE__, "S",
                                 "event-handler select failed");                                  "event-handler select failed");
                        return NULL;                        goto error;
                 }                  }
                 return ev;                  return ev;
         case FDEVENT_HANDLER_LINUX_SYSEPOLL:          case FDEVENT_HANDLER_LINUX_SYSEPOLL:
                 if (0 != fdevent_linux_sysepoll_init(ev)) {                  if (0 != fdevent_linux_sysepoll_init(ev)) {
                        log_error_write(ev->srv, __FILE__, __LINE__, "S",                        log_error_write(srv, __FILE__, __LINE__, "S",
                                 "event-handler linux-sysepoll failed, try to set server.event-handler = \"poll\" or \"select\"");                                  "event-handler linux-sysepoll failed, try to set server.event-handler = \"poll\" or \"select\"");
                        return NULL;                        goto error;
                 }                  }
                 return ev;                  return ev;
         case FDEVENT_HANDLER_SOLARIS_DEVPOLL:          case FDEVENT_HANDLER_SOLARIS_DEVPOLL:
                 if (0 != fdevent_solaris_devpoll_init(ev)) {                  if (0 != fdevent_solaris_devpoll_init(ev)) {
                        log_error_write(ev->srv, __FILE__, __LINE__, "S",                        log_error_write(srv, __FILE__, __LINE__, "S",
                                 "event-handler solaris-devpoll failed, try to set server.event-handler = \"poll\" or \"select\"");                                  "event-handler solaris-devpoll failed, try to set server.event-handler = \"poll\" or \"select\"");
                        return NULL;                        goto error;
                 }                  }
                 return ev;                  return ev;
         case FDEVENT_HANDLER_SOLARIS_PORT:          case FDEVENT_HANDLER_SOLARIS_PORT:
                 if (0 != fdevent_solaris_port_init(ev)) {                  if (0 != fdevent_solaris_port_init(ev)) {
                        log_error_write(ev->srv, __FILE__, __LINE__, "S",                        log_error_write(srv, __FILE__, __LINE__, "S",
                                 "event-handler solaris-eventports failed, try to set server.event-handler = \"poll\" or \"select\"");                                  "event-handler solaris-eventports failed, try to set server.event-handler = \"poll\" or \"select\"");
                        return NULL;                        goto error;
                 }                  }
                 return ev;                  return ev;
         case FDEVENT_HANDLER_FREEBSD_KQUEUE:          case FDEVENT_HANDLER_FREEBSD_KQUEUE:
                 if (0 != fdevent_freebsd_kqueue_init(ev)) {                  if (0 != fdevent_freebsd_kqueue_init(ev)) {
                        log_error_write(ev->srv, __FILE__, __LINE__, "S",                        log_error_write(srv, __FILE__, __LINE__, "S",
                                 "event-handler freebsd-kqueue failed, try to set server.event-handler = \"poll\" or \"select\"");                                  "event-handler freebsd-kqueue failed, try to set server.event-handler = \"poll\" or \"select\"");
                        return NULL;                        goto error;
                 }                  }
                 return ev;                  return ev;
         case FDEVENT_HANDLER_LIBEV:          case FDEVENT_HANDLER_LIBEV:
                 if (0 != fdevent_libev_init(ev)) {                  if (0 != fdevent_libev_init(ev)) {
                        log_error_write(ev->srv, __FILE__, __LINE__, "S",                        log_error_write(srv, __FILE__, __LINE__, "S",
                                 "event-handler libev failed, try to set server.event-handler = \"poll\" or \"select\"");                                  "event-handler libev failed, try to set server.event-handler = \"poll\" or \"select\"");
                        return NULL;                        goto error;
                 }                  }
                 return ev;                  return ev;
         case FDEVENT_HANDLER_UNSET:          case FDEVENT_HANDLER_UNSET:
                 break;                  break;
         }          }
   
        log_error_write(ev->srv, __FILE__, __LINE__, "S",error:
         free(ev->fdarray);
         free(ev);
 
         log_error_write(srv, __FILE__, __LINE__, "S",
                 "event-handler is unknown, try to set server.event-handler = \"poll\" or \"select\"");                  "event-handler is unknown, try to set server.event-handler = \"poll\" or \"select\"");
         return NULL;          return NULL;
 }  }
Line 133  int fdevent_unregister(fdevents *ev, int fd) { Line 136  int fdevent_unregister(fdevents *ev, int fd) {
         if (!ev) return 0;          if (!ev) return 0;
         fdn = ev->fdarray[fd];          fdn = ev->fdarray[fd];
   
        assert(fdn->events == 0);        force_assert(fdn->events == 0);
   
         fdnode_free(fdn);          fdnode_free(fdn);
   
Line 197  void * fdevent_get_context(fdevents *ev, int fd) { Line 200  void * fdevent_get_context(fdevents *ev, int fd) {
         return ev->fdarray[fd]->ctx;          return ev->fdarray[fd]->ctx;
 }  }
   
int fdevent_fcntl_set(fdevents *ev, int fd) {void fd_close_on_exec(int fd) {
 #ifdef FD_CLOEXEC  #ifdef FD_CLOEXEC
        /* close fd on exec (cgi) */        if (fd < 0) return;
        fcntl(fd, F_SETFD, FD_CLOEXEC);        force_assert(-1 != fcntl(fd, F_SETFD, FD_CLOEXEC));
 #else
         UNUSED(fd);
 #endif  #endif
   }
   
   int fdevent_fcntl_set(fdevents *ev, int fd) {
           fd_close_on_exec(fd);
         if ((ev) && (ev->fcntl_set)) return ev->fcntl_set(ev, fd);          if ((ev) && (ev->fcntl_set)) return ev->fcntl_set(ev, fd);
 #ifdef O_NONBLOCK  #ifdef O_NONBLOCK
         return fcntl(fd, F_SETFL, O_NONBLOCK | O_RDWR);          return fcntl(fd, F_SETFL, O_NONBLOCK | O_RDWR);

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>