Ticket #1038: lighttpd-proxy-core.disable-time.patch

File lighttpd-proxy-core.disable-time.patch, 4.2 kB (added by Dan <dmarkham@…>, 20 months ago)
  • src/mod_proxy_core.c

     
    4040#define CONFIG_PROXY_CORE_MAX_POOL_SIZE    PROXY_CORE ".max-pool-size" 
    4141#define CONFIG_PROXY_CORE_CHECK_LOCAL      PROXY_CORE ".check-local" 
    4242#define CONFIG_PROXY_CORE_SPLIT_HOSTNAMES  PROXY_CORE ".split-hostnames" 
     43#define CONFIG_PROXY_CORE_DISABLE_TIME     PROXY_CORE ".disable-time" 
    4344 
    4445static int mod_proxy_wakeup_connections(server *srv, plugin_data *p, plugin_config *p_conf); 
    4546 
     
    268269                { CONFIG_PROXY_CORE_CHECK_LOCAL, NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION },        /* 9 */ 
    269270                { CONFIG_PROXY_CORE_MAX_KEEP_ALIVE, NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },       /* 10 */ 
    270271                { CONFIG_PROXY_CORE_SPLIT_HOSTNAMES, NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION },    /* 11 */ 
     272                { CONFIG_PROXY_CORE_DISABLE_TIME, NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },         /* 12 */ 
    271273                { NULL,                        NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET } 
    272274        }; 
    273275 
     
    295297                s->check_local = 0; 
    296298                s->split_hostnames = 1; 
    297299                s->max_keep_alive_requests = 0; 
     300                s->disable_time = 60; 
    298301 
    299302                cv[0].destination = p->backends_arr; 
    300303                cv[1].destination = &(s->debug); 
     
    306309                cv[9].destination = &(s->check_local); 
    307310                cv[10].destination = &(s->max_keep_alive_requests); 
    308311                cv[11].destination = &(s->split_hostnames); 
     312                cv[12].destination = &(s->disable_time); 
    309313 
    310314                buffer_reset(p->balance_buf); 
    311315 
     
    13421346                        return HANDLER_WAIT_FOR_FD; 
    13431347                case HANDLER_ERROR: 
    13441348                        /* there is no-one on the other side */ 
    1345                         sess->proxy_con->address->disabled_until = srv->cur_ts + 60; 
    1346  
    1347                         TRACE("connecting to address %s (%p) failed, disabling for 60 sec",  
     1349                        sess->proxy_con->address->disabled_until = srv->cur_ts + p->conf.disable_time; 
     1350                         
     1351       
     1352                        TRACE("connecting to address %s (%p) failed, disabling for %d sec",  
    13481353                                        BUF_STR(sess->proxy_con->address->name), 
    1349                                         sess->proxy_con->address); 
     1354                                        sess->proxy_con->address, 
     1355                                        p->conf.disable_time ); 
     1356           
    13501357                        COUNTER_INC(sess->proxy_backend->requests_failed); 
    13511358 
    13521359                        sess->proxy_con->address->state = PROXY_ADDRESS_STATE_DISABLED; 
     
    13901397                                        break; 
    13911398                                case EHOSTUNREACH: 
    13921399                                        /* there is no-one on the other side */ 
    1393                                         sess->proxy_con->address->disabled_until = srv->cur_ts + 60; 
     1400                                        sess->proxy_con->address->disabled_until = srv->cur_ts + p->conf.disable_time; 
    13941401 
    1395                                         TRACE("host %s is unreachable, disabling for 60 sec", sess->proxy_con->address->name->ptr); 
     1402                                        TRACE("host %s is unreachable, disabling for %d sec", sess->proxy_con->address->name->ptr, p->conf.disable_time); 
    13961403                                        break; 
    13971404                                default: 
    1398                                         sess->proxy_con->address->disabled_until = srv->cur_ts + 60; 
     1405                                        sess->proxy_con->address->disabled_until = srv->cur_ts + p->conf.disable_time; 
    13991406 
    14001407                                        TRACE("connected finally failed: %s (%d)", strerror(socket_error), socket_error); 
    14011408 
    1402                                         TRACE("connect to address %s failed and I don't know why, disabling for 10 sec", sess->proxy_con->address->name->ptr); 
     1409                                        TRACE("connect to address %s failed and I don't know why, disabling for %d sec", sess->proxy_con->address->name->ptr, p->conf.disable_time); 
    14031410 
    14041411                                        break; 
    14051412                                } 
     
    19041911        PATCH_OPTION(check_local); 
    19051912        PATCH_OPTION(split_hostnames); 
    19061913        PATCH_OPTION(max_keep_alive_requests); 
     1914        PATCH_OPTION(disable_time); 
    19071915 
    19081916        /* skip the first, the global context */ 
    19091917        for (i = 1; i < srv->config_context->used; i++) { 
     
    19431951                                PATCH_OPTION(split_hostnames); 
    19441952                        } else if (buffer_is_equal_string(du->key, CONST_STR_LEN(CONFIG_PROXY_CORE_MAX_KEEP_ALIVE))) { 
    19451953                                PATCH_OPTION(max_keep_alive_requests); 
     1954                        } else if (buffer_is_equal_string(du->key, CONST_STR_LEN(CONFIG_PROXY_CORE_DISABLE_TIME))) { 
     1955                                PATCH_OPTION(disable_time); 
    19461956                        } 
    19471957                } 
    19481958        } 
  • src/mod_proxy_core.h

     
    3232        unsigned short check_local; 
    3333        unsigned short split_hostnames; 
    3434        unsigned short max_keep_alive_requests; 
     35        unsigned short disable_time; 
    3536 
    3637        proxy_balance_t balancer; 
    3738        struct proxy_protocol *protocol;