Ignore:
Timestamp:
2011-01-10T00:37:12+01:00 (6 years ago)
Author:
jow
Message:

[backfire] merge r24952

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/package/uhttpd/src/uhttpd.c

    r24824 r24953  
    128128        int bound = 0; 
    129129 
    130         int tcp_ka_idl = 1; 
    131         int tcp_ka_int = 1; 
    132         int tcp_ka_cnt = 3; 
     130        int tcp_ka_idl, tcp_ka_int, tcp_ka_cnt; 
    133131 
    134132        struct listener *l = NULL; 
     
    158156 
    159157                /* TCP keep-alive */ 
    160                 if( setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, &yes, sizeof(yes)) || 
    161                     setsockopt(sock, SOL_TCP, TCP_KEEPIDLE,  &tcp_ka_idl, sizeof(tcp_ka_idl)) || 
    162                     setsockopt(sock, SOL_TCP, TCP_KEEPINTVL, &tcp_ka_int, sizeof(tcp_ka_int)) || 
    163                     setsockopt(sock, SOL_TCP, TCP_KEEPCNT,   &tcp_ka_cnt, sizeof(tcp_ka_cnt)) ) 
    164                 { 
    165                     fprintf(stderr, "Notice: Unable to enable TCP keep-alive: %s\n", 
    166                         strerror(errno)); 
     158                if( conf->tcp_keepalive > 0 ) 
     159                { 
     160                        tcp_ka_idl = 1; 
     161                        tcp_ka_cnt = 3; 
     162                        tcp_ka_int = conf->tcp_keepalive; 
     163 
     164                        if( setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, &yes, sizeof(yes)) || 
     165                            setsockopt(sock, SOL_TCP, TCP_KEEPIDLE,  &tcp_ka_idl, sizeof(tcp_ka_idl)) || 
     166                            setsockopt(sock, SOL_TCP, TCP_KEEPINTVL, &tcp_ka_int, sizeof(tcp_ka_int)) || 
     167                            setsockopt(sock, SOL_TCP, TCP_KEEPCNT,   &tcp_ka_cnt, sizeof(tcp_ka_cnt)) ) 
     168                        { 
     169                            fprintf(stderr, "Notice: Unable to enable TCP keep-alive: %s\n", 
     170                                strerror(errno)); 
     171                        } 
    167172                } 
    168173 
     
    620625{ 
    621626        /* master file descriptor list */ 
    622         fd_set used_fds, serv_fds, read_fds; 
     627        fd_set serv_fds; 
    623628 
    624629        /* working structs */ 
     
    651656#endif 
    652657 
    653         /* clear the master and temp sets */ 
    654         FD_ZERO(&used_fds); 
    655658        FD_ZERO(&serv_fds); 
    656         FD_ZERO(&read_fds); 
    657659 
    658660        /* handle SIGPIPE, SIGINT, SIGTERM, SIGCHLD */ 
     
    723725 
    724726        while( (opt = getopt(argc, argv, 
    725                 "fSDRC:K:E:I:p:s:h:c:l:L:d:r:m:x:i:t:T:")) > 0 
     727                "fSDRC:K:E:I:p:s:h:c:l:L:d:r:m:x:i:t:T:A:")) > 0 
    726728        ) { 
    727729                switch(opt) 
     
    895897                        case 'T': 
    896898                                conf.network_timeout = atoi(optarg); 
     899                                break; 
     900 
     901                        /* tcp keep-alive */ 
     902                        case 'A': 
     903                                conf.tcp_keepalive = atoi(optarg); 
    897904                                break; 
    898905 
Note: See TracChangeset for help on using the changeset viewer.