Changeset 456

Show
Ignore:
Timestamp:
11/13/06 13:13:12 (2 years ago)
Author:
alo
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • cherokee/trunk/cherokee/server-protected.h

    r454 r456  
    135135        unsigned short             port_tls; 
    136136        cherokee_boolean_t         tls_enabled; 
     137        cherokee_buffer_t          unix_socket; 
    137138 
    138139        /* Server name 
  • cherokee/trunk/cherokee/server.c

    r454 r456  
    106106        cherokee_socket_init (&n->socket_tls); 
    107107 
     108        cherokee_buffer_init (&n->unix_socket); 
     109 
    108110        n->ipv6            = true; 
    109111        n->fdpoll_method   = cherokee_poll_UNSET; 
     
    325327        /* File descriptors 
    326328         */ 
     329        cherokee_buffer_mrproper (&srv->unix_socket); 
     330 
    327331        cherokee_socket_close (&srv->socket); 
    328332        cherokee_socket_mrproper (&srv->socket); 
     
    546550 
    547551static ret_t 
     552initialize_server_socket_unix (cherokee_server_t *srv, cherokee_socket_t *sock, unsigned short port) 
     553{ 
     554#ifndef AF_LOCAL 
     555        return ret_no_sys; 
     556#else 
     557        ret_t ret; 
     558 
     559        /* Create the socket, and set its properties 
     560         */ 
     561        ret = cherokee_socket_set_client (sock, AF_LOCAL); 
     562        if (ret != ret_ok) return ret; 
     563 
     564        /* Bind the socket 
     565         */ 
     566        ret = cherokee_socket_bind (sock, port, &srv->listen_to); 
     567        if (ret != ret_ok) return ret; 
     568         
     569        return ret_ok; 
     570#endif 
     571} 
     572 
     573static ret_t 
    548574print_banner (cherokee_server_t *srv) 
    549575{ 
     
    645671        /* Initialize the socket 
    646672         */ 
     673        ret = ret_not_found; 
     674 
     675#ifdef AF_LOCAL 
     676        if (! cherokee_buffer_is_empty (&srv->unix_socket)) { 
     677                ret = initialize_server_socket_unix (srv, socket, port);                 
     678        } 
     679#endif 
     680 
    647681#ifdef HAVE_IPV6 
    648         if (srv->ipv6) { 
     682        if (srv->ipv6 && (ret != ret_ok)) { 
    649683                ret = initialize_server_socket6 (srv, socket, port); 
    650684        } 
     
    653687#endif 
    654688 
    655         if ((srv->ipv6 == false) || (ret != ret_ok)) { 
     689        if (ret != ret_ok) { 
    656690                ret = initialize_server_socket4 (srv, socket, port); 
    657691        } 
    658692 
    659693        if (ret != ret_ok) { 
    660                 PRINT_ERROR ("Can't bind() socket (port=%d, UID=%d, GID=%d)\n",  
    661                              port, getuid(), getgid()); 
     694                if (cherokee_buffer_is_empty (&srv->unix_socket))  
     695                        PRINT_ERROR ("Can't bind() socket (port=%d, UID=%d, GID=%d)\n",  
     696                                     port, getuid(), getgid()); 
     697                else 
     698                        PRINT_ERROR ("Can't bind() socket (unix=%s, UID=%d, GID=%d)\n",  
     699                                     srv->unix_socket.buf, getuid(), getgid()); 
    662700                return ret_error; 
    663701        } 
     
    13071345        } else if (equal_buf_str (&conf->key, "keepalive_max_requests")) { 
    13081346                srv->keepalive_max = atoi (conf->val.buf); 
     1347 
     1348        } else if (equal_buf_str (&conf->key, "unix_socket")) { 
     1349                cherokee_buffer_clean (&srv->unix_socket); 
     1350                cherokee_buffer_add_buffer (&srv->unix_socket, &conf->val); 
    13091351 
    13101352        } else if (equal_buf_str (&conf->key, "panic_action")) { 
  • cherokee/trunk/cherokee/socket.h

    r454 r456  
    6363# include <openssl/rand.h> 
    6464#endif 
    65  
    6665 
    6766#include "buffer.h" 
     
    7978#endif 
    8079 
     80#ifndef AF_LOCAL 
     81# define AF_LOCAL AF_UNIX 
     82#endif 
     83 
    8184 
    8285/* Socket status 
     
    143146#define SOCKET(s)              ((cherokee_socket_t *)(s)) 
    144147#define SOCKET_FD(s)           (SOCKET(s)->socket) 
     148#define SOCKET_AF(s)           (SOCKET(s)->client_addr.sa.sa_family) 
     149#define SOCKET_STATUS(s)       (SOCKET(s)->status) 
     150 
    145151#define SOCKET_ADDR(s)         (SOCKET(s)->client_addr) 
    146 #define SOCKET_AF(s)           (SOCKET(s)->client_addr.sa.sa_family) 
    147 #define SOCKET_ADDR_UNIX(s)    (SOCKET(s)->client_addr.sa_un) 
     152#define SOCKET_ADDR_UNIX(s)    ((struct sockaddr_un  *) &SOCKET_ADDR(s)) 
    148153#define SOCKET_ADDR_IPv4(s)    ((struct sockaddr_in  *) &SOCKET_ADDR(s)) 
    149154#define SOCKET_ADDR_IPv6(s)    ((struct sockaddr_in6 *) &SOCKET_ADDR(s)) 
    150 #define SOCKET_STATUS(s)       (SOCKET(s)->status) 
    151155 
    152156#define SOCKET_SIN_PORT(s)     (SOCKET(s)->client_addr.sa_in.sin_port) 
  • cherokee/trunk/configure.in

    r453 r456  
    251251AC_SEARCH_LIBS(setsockopt, socket) 
    252252 
    253  
    254253dnl 
    255254dnl Check for fd events inspect functions