Changeset 1790

Show
Ignore:
Timestamp:
08/13/08 13:09:46 (3 months ago)
Author:
alo
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • cherokee/trunk/ChangeLog

    r1789 r1790  
    112008-08-13  Alvaro Lopez Ortega  <alvaro@alobbs.com> 
     2 
     3        * cherokee/resolv_cache.c, cherokee/socket.c, cherokee/socket.h, 
     4        cherokee/source.c: Fixes the Unix socket support of the FastCGI 
     5        and SCGI handlers (plus some code clean up). 
    26 
    37        * cherokee/handler_mirror.c, cherokee/handler_mirror.h: Fixes the 
  • cherokee/trunk/cherokee/resolv_cache.c

    r1131 r1790  
    166166         */ 
    167167        ret = entry_fill_up (n, domain); 
    168         if (unlikely (ret != ret)) { 
     168        if (unlikely (ret != ret_ok)) { 
    169169                entry_free (n); 
    170170                return ret; 
  • cherokee/trunk/cherokee/socket.c

    r1769 r1790  
    784784#endif 
    785785#ifdef HAVE_SOCKADDR_UN 
    786         case AF_LOCAL
     786        case AF_UNIX
    787787                memset (&sock->client_addr, 0, sizeof (struct sockaddr_un)); 
    788788                break; 
     
    903903#endif 
    904904#ifdef HAVE_SOCKADDR_UN 
    905         case AF_LOCAL
     905        case AF_UNIX
    906906                return cherokee_bind_local (sock, listen_to); 
    907907#endif 
     
    16541654                return ret_no_sys; 
    16551655#else 
    1656                 memset ((char*) SOCKET_SUN_PATH (socket), 0, sizeof (SOCKET_ADDR_UNIX(socket))); 
     1656                memset ((char*) SOCKET_SUN_PATH(socket), 0,  
     1657                        sizeof (SOCKET_ADDR_UNIX(socket))); 
    16571658 
    16581659                SOCKET_ADDR_UNIX(socket)->sun_family = AF_UNIX; 
    1659                 strncpy (SOCKET_SUN_PATH (socket), hostname->buf, hostname->len); 
     1660 
     1661                strncpy (SOCKET_SUN_PATH (socket), hostname->buf,  
     1662                         sizeof (SOCKET_ADDR_UNIX(socket)->sun_path) - sizeof(short)); 
    16601663 
    16611664                return ret_ok; 
     
    16761679        switch (SOCKET_AF(sock)) { 
    16771680        case AF_INET: 
    1678                 r = connect (SOCKET_FD(sock), (struct sockaddr *) &SOCKET_ADDR(sock), sizeof(struct sockaddr_in)); 
     1681                r = connect (SOCKET_FD(sock), 
     1682                             (struct sockaddr *) &SOCKET_ADDR(sock),  
     1683                             sizeof(struct sockaddr_in)); 
    16791684                break; 
    16801685#ifdef HAVE_IPV6 
    16811686        case AF_INET6: 
    1682                 r = connect (SOCKET_FD(sock), (struct sockaddr *) &SOCKET_ADDR(sock), sizeof(struct sockaddr_in6)); 
     1687                r = connect (SOCKET_FD(sock),  
     1688                             (struct sockaddr *) &SOCKET_ADDR(sock), 
     1689                             sizeof(struct sockaddr_in6)); 
    16831690                break; 
    16841691#endif 
    16851692#ifdef HAVE_SOCKADDR_UN 
    1686         case AF_LOCAL: 
    1687                 r = connect (SOCKET_FD(sock), (struct sockaddr *) SOCKET_ADDR_UNIX(sock), sizeof(SOCKET_ADDR_UNIX(sock))); 
     1693        case AF_UNIX: 
     1694                r = connect (SOCKET_FD(sock),  
     1695                             (struct sockaddr *) &SOCKET_ADDR(sock),  
     1696                             SUN_LEN (SOCKET_ADDR_UNIX(sock))); 
    16881697                break; 
    16891698#endif   
  • cherokee/trunk/cherokee/socket.h

    r1747 r1790  
    8282#endif 
    8383 
     84#ifndef SUN_LEN 
     85#define SUN_LEN(sa)                                             \ 
     86        (strlen((sa)->sun_path) +                               \ 
     87         (size_t)(((struct sockaddr_un*)0)->sun_path)) 
     88#endif 
    8489 
    8590/* Socket status 
  • cherokee/trunk/cherokee/source.c

    r1754 r1790  
    9393        if (! cherokee_buffer_is_empty (&src->unix_socket)) { 
    9494                ret = cherokee_socket_set_client (sock, AF_UNIX); 
    95                 if (ret != ret_ok) return ret; 
    96                  
    97                 ret = cherokee_resolv_cache_get_host (resolv, src->unix_socket.buf, sock); 
    98                 if (ret != ret_ok) return ret; 
     95                if (ret != ret_ok)  
     96                        return ret; 
     97 
     98                /* Copy the unix socket path */ 
     99                ret = cherokee_socket_gethostbyname (sock, &src->unix_socket); 
     100                if (ret != ret_ok) 
     101                        return ret; 
    99102 
    100103                /* Set non-blocking */