char *
ngx_http_flex_cache_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_flex_cache_loc_conf_t  *prev = parent;
    ngx_http_flex_cache_loc_conf_t  *fc = child;

    ngx_conf_merge_value(fc->enabled, prev->enabled, 0);

    if (fc->cache_key.value.data == NULL) {
        fc->cache_key = prev->cache_key;
    }

    ngx_conf_merge_ptr_value(fc->cache, prev->cache, NULL);
    if (fc->cache && fc->cache->data == NULL) {
        ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                           "\"flex cache\" zone \"%V\" is unknown",
                           &fc->cache->shm.name);
        return NGX_CONF_ERROR;
    }

    ngx_conf_merge_size_value(fc->chunk_size, prev->chunk_size, 512 * 1024);

    ngx_conf_merge_uint_value(fc->cache_min_uses, prev->cache_min_uses, 1);

    ngx_conf_merge_ptr_value(fc->cache_valid, prev->cache_valid, NULL);

    return NGX_CONF_OK;
}
static char *
ngx_http_advertise_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_advertise_conf_t  *prev = parent;
    ngx_http_advertise_conf_t  *conf = child;
    ngx_http_variable_t        *var;
    
    ngx_conf_merge_value(conf->inject, prev->inject, 0);    
    ngx_conf_merge_size_value(conf->buffer_size, prev->buffer_size, 1 * 1024 * 1024);
    ngx_conf_merge_ptr_value(conf->advertise_array, prev->advertise_array, NGX_CONF_UNSET_PTR);
    ngx_conf_merge_size_value(conf->min_content_len, prev->min_content_len, 48);
    ngx_conf_merge_uint_value(conf->max_advertise_len, prev->max_advertise_len, 0);
    
#if (NGX_PCRE)
    ngx_conf_merge_ptr_value(conf->black_hosts, prev->black_hosts, NGX_CONF_UNSET_PTR)
#endif

    var = ngx_http_add_variable(cf, &g_advertise_inject_ctx_s, NGX_HTTP_VAR_CHANGEABLE);
    if (var == NULL) {
        return NGX_CONF_ERROR;
    }

    conf->index = ngx_http_get_variable_index(cf, &g_advertise_inject_ctx_s);
    if (conf->index == NGX_ERROR) {
        return NGX_CONF_ERROR;
    }
    
    
    var->get_handler = ngx_http_g_ctx_gethandler;
    var->data = conf->index;

    var = ngx_http_add_variable(cf,  &g_advertise_status_s, NGX_HTTP_VAR_CHANGEABLE);
    var->get_handler = ngx_http_status_gethandler;
    return NGX_CONF_OK;
}
static char *
ngx_http_iconv_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_iconv_loc_conf_t       *conf, *prev;

    conf = child;
    prev = parent;

    dd("before merge:conf->size=%d,prev->size=%d", (int) conf->buf_size,
       (int) prev->buf_size);

    if (conf->buf_size <= 1 || prev->buf_size <= 1) {
        ngx_log_error(NGX_LOG_ERR, cf->log, 0,
                      "iconv_buffer_size must not less than 2 bytes");
        return NGX_CONF_ERROR;
    }

    ngx_conf_merge_size_value(conf->buf_size, prev->buf_size,
                              (size_t) ngx_pagesize);

    dd("after merge:conf->size=%d,prev->size=%d", (int) conf->buf_size,
       (int) prev->buf_size);

    ngx_conf_merge_value(conf->enabled, prev->enabled, 0);
    ngx_conf_merge_ptr_value(conf->from, (void *)prev->from, (char *) "utf-8");
    ngx_conf_merge_ptr_value(conf->to, (void *)prev->to, (char *) "gbk");

    return NGX_CONF_OK;
}
static char *
ngx_rtmp_notify_merge_app_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_rtmp_notify_app_conf_t *prev = parent;
    ngx_rtmp_notify_app_conf_t *conf = child;

    ngx_conf_merge_ptr_value(conf->publish_url, prev->publish_url, 0);
    ngx_conf_merge_ptr_value(conf->play_url, prev->play_url, 0);

    return NGX_CONF_OK;
}
static char *
ngx_http_reqstat_merge_loc_conf(ngx_conf_t *cf, void *parent,
    void *child)
{
    ngx_http_reqstat_conf_t      *conf = child;
    ngx_http_reqstat_conf_t      *prev = parent;

    ngx_conf_merge_ptr_value(conf->bypass, prev->bypass, NULL);
    ngx_conf_merge_ptr_value(conf->monitor, prev->monitor, NULL);
    ngx_conf_merge_ptr_value(conf->display, prev->display, NULL);

    return NGX_CONF_OK;
}
示例#6
0
static char *
ngx_http_session_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_session_conf_t  *prev = parent;
    ngx_http_session_conf_t  *conf = child;

    ngx_conf_merge_value(conf->enabled, prev->enabled, 0);
    ngx_conf_merge_value(conf->timeout, prev->timeout, 
            NGX_HTTP_SESSION_DEFAULT_TMOUT);
    ngx_conf_merge_value(conf->bl_timeout, prev->bl_timeout, conf->timeout);
    ngx_conf_merge_value(conf->redirect_timeout, prev->redirect_timeout, 
            NGX_HTTP_SESSION_DEFAULT_REDIRECT_TMOUT);
    ngx_conf_merge_ptr_value(conf->keyword.data, prev->keyword.data, 
            (u_char *)NGX_HTTP_SESSION_DEFAULT_COOKIE);
    ngx_conf_merge_size_value(conf->keyword.len, prev->keyword.len, 
            strlen(NGX_HTTP_SESSION_DEFAULT_COOKIE));

    if (conf->bl_timeout > conf->timeout) {
        return "blacklist timeout must not large then session timeout";
    }

    if (conf->redirect_timeout > conf->timeout) {
        return "redirect timeout must not large then session timeout";
    }

    return NGX_CONF_OK;
}
static char *
ngx_rtmp_record_merge_app_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_rtmp_record_app_conf_t *prev = parent;
    ngx_rtmp_record_app_conf_t *conf = child;
    ngx_rtmp_record_node_t    **node;

    ngx_conf_merge_str_value(conf->def.path, prev->def.path, "");
    ngx_conf_merge_str_value(conf->def.suffix, prev->def.suffix, ".flv");
    ngx_conf_merge_size_value(conf->def.max_size, prev->def.max_size, 0);
    ngx_conf_merge_size_value(conf->def.max_frames, prev->def.max_frames, 0);
    ngx_conf_merge_value(conf->def.unique, prev->def.unique, 0);
    ngx_conf_merge_msec_value(conf->def.interval, prev->def.interval, 
                              (ngx_msec_t) NGX_CONF_UNSET);
    ngx_conf_merge_bitmask_value(conf->def.flags, prev->def.flags, 0);
    ngx_conf_merge_ptr_value(conf->def.url, prev->def.url, NULL);

    if (conf->def.flags) {
        node = ngx_array_push(&conf->nodes);
        if (node == NULL) {
            return NGX_CONF_ERROR;
        }

        *node = &conf->def;
    }

    return NGX_CONF_OK;
}
static char *
ngx_http_vhost_traffic_status_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_vhost_traffic_status_loc_conf_t *prev = parent;
    ngx_http_vhost_traffic_status_loc_conf_t *conf = child;

    ngx_str_t                           name;
    ngx_shm_zone_t                      *shm_zone;
    ngx_http_vhost_traffic_status_ctx_t *ctx;

    ctx = ngx_http_conf_get_module_main_conf(cf, ngx_http_vhost_traffic_status_module);

    if (!ctx->enable) {
        return NGX_CONF_OK;
    }

    ngx_conf_merge_value(conf->enable, prev->enable, 1);
    ngx_conf_merge_ptr_value(conf->shm_zone, prev->shm_zone, NULL);
    ngx_conf_merge_value(conf->format, prev->format, NGX_HTTP_VHOST_TRAFFIC_STATUS_FORMAT_JSON);

    name = ctx->shm_name;

    shm_zone = ngx_shared_memory_add(cf, &name, 0,
            &ngx_http_vhost_traffic_status_module);

    if (shm_zone == NULL) {
        return NGX_CONF_ERROR;
    }

    conf->shm_zone = shm_zone;
    conf->shm_name = name;

    return NGX_CONF_OK;
}
static char *
ngx_rtmp_record_merge_app_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_rtmp_record_app_conf_t     *prev = parent;
    ngx_rtmp_record_app_conf_t     *conf = child;
    ngx_rtmp_record_app_conf_t    **rracf;

    ngx_conf_merge_str_value(conf->path, prev->path, "");
    ngx_conf_merge_str_value(conf->suffix, prev->suffix, ".flv");
    ngx_conf_merge_size_value(conf->max_size, prev->max_size, 0);
    ngx_conf_merge_size_value(conf->max_frames, prev->max_frames, 0);
    ngx_conf_merge_value(conf->unique, prev->unique, 0);
    ngx_conf_merge_value(conf->append, prev->append, 0);
    ngx_conf_merge_value(conf->lock_file, prev->lock_file, 0);
    ngx_conf_merge_value(conf->notify, prev->notify, 0);
    ngx_conf_merge_msec_value(conf->interval, prev->interval,
                              (ngx_msec_t) NGX_CONF_UNSET);
    ngx_conf_merge_bitmask_value(conf->flags, prev->flags, 0);
    ngx_conf_merge_ptr_value(conf->url, prev->url, NULL);

    if (conf->flags) {
        rracf = ngx_array_push(&conf->rec);
        if (rracf == NULL) {
            return NGX_CONF_ERROR;
        }

        *rracf = conf;
    }

    return NGX_CONF_OK;
}
示例#10
0
static char *
ngx_http_drizzle_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_drizzle_loc_conf_t *prev = parent;
    ngx_http_drizzle_loc_conf_t *conf = child;

    ngx_conf_merge_value(conf->enable_module_header,
            prev->enable_module_header, 1);

    ngx_conf_merge_msec_value(conf->upstream.connect_timeout,
                              prev->upstream.connect_timeout, 60000);

    ngx_conf_merge_msec_value(conf->upstream.send_timeout,
                              prev->upstream.send_timeout, 60000);

    ngx_conf_merge_msec_value(conf->recv_cols_timeout,
                              prev->recv_cols_timeout, 60000);

    ngx_conf_merge_msec_value(conf->recv_rows_timeout,
                              prev->recv_rows_timeout, 60000);

    if (conf->dbname == NULL) {
        conf->dbname = prev->dbname;
    }

    if (conf->query == NULL) {
        conf->query = prev->query;
    }

    ngx_conf_merge_ptr_value(conf, prev, NULL);

    return NGX_CONF_OK;
}
static char *
ngx_rtmp_notify_merge_app_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_rtmp_notify_app_conf_t *prev = parent;
    ngx_rtmp_notify_app_conf_t *conf = child;
    ngx_uint_t                  n;

    for (n = 0; n < NGX_RTMP_NOTIFY_APP_MAX; ++n) {
        ngx_conf_merge_ptr_value(conf->url[n], prev->url[n], NULL);
        if (conf->url[n]) {
            conf->active = 1;
        }
    }

    if (conf->active) {
        prev->active = 1;
    }

    ngx_conf_merge_uint_value(conf->method, prev->method,
                              NGX_RTMP_NETCALL_HTTP_POST);
    ngx_conf_merge_msec_value(conf->update_timeout, prev->update_timeout,
                              30000);
    ngx_conf_merge_value(conf->update_strict, prev->update_strict, 0);
    ngx_conf_merge_value(conf->relay_redirect, prev->relay_redirect, 0);

    return NGX_CONF_OK;
}
示例#12
0
static char *
ngx_mail_core_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_mail_core_srv_conf_t *prev = parent;
    ngx_mail_core_srv_conf_t *conf = child;

    ngx_conf_merge_msec_value(conf->timeout, prev->timeout, 60000);
    ngx_conf_merge_msec_value(conf->resolver_timeout, prev->resolver_timeout,
                              30000);

    ngx_conf_merge_value(conf->so_keepalive, prev->so_keepalive, 0);


    ngx_conf_merge_str_value(conf->server_name, prev->server_name, "");

    if (conf->server_name.len == 0) {
        conf->server_name = cf->cycle->hostname;
    }

    if (conf->protocol == NULL) {
        ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
                      "unknown mail protocol for server in %s:%ui",
                      conf->file_name, conf->line);
        return NGX_CONF_ERROR;
    }

    ngx_conf_merge_ptr_value(conf->resolver, prev->resolver, NULL);

    return NGX_CONF_OK;
}
static char* ngx_http_gridfs_merge_loc_conf(ngx_conf_t* directive, void* void_parent, void* void_child) {
    ngx_http_gridfs_loc_conf_t* parent = void_parent;
    ngx_http_gridfs_loc_conf_t* child = void_child;

    ngx_conf_merge_str_value(child->gridfs_db, parent->gridfs_db, "gridfs");    
    ngx_conf_merge_str_value(child->gridfs_root_collection,
			     parent->gridfs_root_collection, "fs");
    ngx_conf_merge_str_value(child->gridfs_field, parent->gridfs_field, "_id");
    ngx_conf_merge_uint_value(child->gridfs_type, parent->gridfs_type, bson_oid);
    ngx_conf_merge_ptr_value(child->gridfs_conn, parent->gridfs_conn, NGX_CONF_UNSET_PTR);

    /* Currently only support for "_id" and "filename" */ 
    if (child->gridfs_field.data != NULL
	&& ngx_strcmp(child->gridfs_field.data, "filename") != 0 
	&& ngx_strcmp(child->gridfs_field.data, "_id") != 0) {
      ngx_conf_log_error(NGX_LOG_EMERG, directive, 0, 
			 "Unsupported Field: %s", child->gridfs_field.data);
      return NGX_CONF_ERROR;
    }
    if (child->gridfs_field.data != NULL 
	&& ngx_strcmp(child->gridfs_field.data, "filename") == 0 
	&& child->gridfs_type != bson_string) {
      ngx_conf_log_error(NGX_LOG_EMERG, directive, 0, 
			 "Field: filename, must be of Type: string");
      return NGX_CONF_ERROR;
    } 

    return NGX_CONF_OK;
}
static char *
ngx_http_encrypted_session_merge_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_encrypted_session_conf_t *prev = parent;
    ngx_http_encrypted_session_conf_t *conf = child;

    ngx_conf_merge_ptr_value(conf->key, prev->key, NULL);

    ngx_conf_merge_ptr_value(conf->iv, prev->iv,
                             ngx_http_encrypted_session_default_iv);

    ngx_conf_merge_value(conf->expires, prev->expires,
                         ngx_http_encrypted_session_default_expires);

    return NGX_CONF_OK;
}
static char *
ngx_http_data_dome_auth_merge_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_data_dome_auth_conf_t *prev = parent;
    ngx_http_data_dome_auth_conf_t *conf = child;

#if (NGX_PCRE)
    ngx_regex_compile_t   rc;
    u_char                errstr[NGX_MAX_CONF_ERRSTR];
#endif

    if (conf->uri_lengths == NULL) {
        conf->uri_lengths = prev->uri_lengths;
        conf->uri_values = prev->uri_values;
    }
    ngx_conf_merge_uint_value(conf->learning, prev->learning, 0);
	ngx_conf_merge_value(conf->pass_internal_redirect, prev->pass_internal_redirect, 1);

#if (NGX_PCRE)
    if (conf->uri_regex == NULL) {
    conf->uri_regex = prev->uri_regex;
	conf->uri_regex_raw = prev->uri_regex_raw;

	if (conf->uri_regex == NULL) {
	    ngx_str_set(&conf->uri_regex_raw, "");

	}
    }

        if (conf->uri_regex_exclusion == NULL) {
  conf->uri_regex_exclusion = prev->uri_regex_exclusion;
	conf->uri_regex_exclusion_raw = prev->uri_regex_exclusion_raw;

	if (conf->uri_regex_exclusion == NULL) {
	    ngx_memzero(&rc, sizeof(ngx_regex_compile_t));

	    ngx_str_set(&rc.pattern, "\\.(js|css|jpg|jpeg|png|ico|gif|tiff|svg|woff|woff2|ttf|eot|mp4|otf)$");
	    rc.pool = cf->pool;
	    rc.options = NGX_REGEX_CASELESS;
	    rc.err.len = NGX_MAX_CONF_ERRSTR;
	    rc.err.data = errstr;

	    if (ngx_regex_compile(&rc) != NGX_OK) {
		ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "%V", &rc.err);
		return NGX_CONF_ERROR;
	    }

	    conf->uri_regex_exclusion = rc.regex;
	    conf->uri_regex_exclusion_raw = rc.pattern;
	}
    }
#endif

    ngx_conf_merge_ptr_value(conf->vars, prev->vars, NULL);

    return NGX_CONF_OK;
}
static char *
ngx_http_tnt_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_tnt_loc_conf_t *prev = parent;
    ngx_http_tnt_loc_conf_t *conf = child;

    ngx_conf_merge_ptr_value(conf->upstream.local,
                  prev->upstream.local, NULL);
    ngx_conf_merge_msec_value(conf->upstream.connect_timeout,
                  prev->upstream.connect_timeout, 60000);

    ngx_conf_merge_msec_value(conf->upstream.send_timeout,
                  prev->upstream.send_timeout, 60000);

    ngx_conf_merge_msec_value(conf->upstream.read_timeout,
                  prev->upstream.read_timeout, 60000);

    ngx_conf_merge_size_value(conf->upstream.buffer_size,
                  prev->upstream.buffer_size,
                  (size_t) ngx_pagesize);

    ngx_conf_merge_bitmask_value(conf->upstream.next_upstream,
                  prev->upstream.next_upstream,
                              (NGX_CONF_BITMASK_SET
                               |NGX_HTTP_UPSTREAM_FT_ERROR
                               |NGX_HTTP_UPSTREAM_FT_TIMEOUT));

    if (conf->upstream.next_upstream & NGX_HTTP_UPSTREAM_FT_OFF) {
        conf->upstream.next_upstream = NGX_CONF_BITMASK_SET
                                       |NGX_HTTP_UPSTREAM_FT_OFF;
    }

    if (conf->upstream.upstream == NULL) {
        conf->upstream.upstream = prev->upstream.upstream;
    }

    ngx_conf_merge_size_value(conf->in_multiplier, prev->in_multiplier, 2);

    ngx_conf_merge_size_value(conf->out_multiplier, prev->out_multiplier, 2);

    ngx_conf_merge_str_value(conf->method, prev->method, "");

    ngx_conf_merge_size_value(conf->pass_http_request_buffer_size,
                  prev->pass_http_request_buffer_size, 4096*2);

    ngx_conf_merge_uint_value(conf->pass_http_request,
                  prev->pass_http_request, NGX_TNT_CONF_OFF);

    ngx_conf_merge_bitmask_value(conf->http_rest_methods,
                  prev->http_rest_methods,
                              (NGX_CONF_BITMASK_SET
                               |NGX_HTTP_GET
                               |NGX_HTTP_PUT
                               |NGX_HTTP_DELETE));

    return NGX_CONF_OK;
}
static char *
ngx_http_auth_request_merge_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_auth_request_conf_t *prev = parent;
    ngx_http_auth_request_conf_t *conf = child;
    ngx_conf_merge_str_value(conf->uri, prev->uri, "");
    ngx_conf_merge_ptr_value(conf->vars, prev->vars, NULL);
    return NGX_CONF_OK;
}
char *
ngx_postgres_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_postgres_loc_conf_t  *prev = parent;
    ngx_postgres_loc_conf_t  *conf = child;

    dd("entering");

    ngx_conf_merge_msec_value(conf->upstream.connect_timeout,
                              prev->upstream.connect_timeout, 10000);

    ngx_conf_merge_msec_value(conf->upstream.read_timeout,
                              prev->upstream.read_timeout, 30000);

    if ((conf->upstream.upstream == NULL) && (conf->upstream_cv == NULL)) {
        conf->upstream.upstream = prev->upstream.upstream;
        conf->upstream_cv = prev->upstream_cv;
    }

    if ((conf->query.def == NULL) && (conf->query.methods == NULL)) {
        conf->query.methods_set = prev->query.methods_set;
        conf->query.methods = prev->query.methods;
        conf->query.def = prev->query.def;
    }

    ngx_conf_merge_ptr_value(conf->rewrites, prev->rewrites, NULL);

    if (conf->output_handler == NGX_CONF_UNSET_PTR) {
        if (prev->output_handler == NGX_CONF_UNSET_PTR) {
            /* default */
            conf->output_handler = ngx_postgres_output_rds;
            conf->output_binary = 0;
        } else {
            /* merge */
            conf->output_handler = prev->output_handler;
            conf->output_binary = prev->output_binary;
        }
    }

    ngx_conf_merge_ptr_value(conf->variables, prev->variables, NULL);

    dd("returning NGX_CONF_OK");
    return NGX_CONF_OK;
}
static char *
ngx_rtmp_authen_merge_app_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_rtmp_authen_app_conf_t    *prev = parent;
    ngx_rtmp_authen_app_conf_t    *conf = child;

    ngx_conf_merge_ptr_value(conf->connect_url, prev->connect_url, 0);

    return NGX_CONF_OK;
}
static char *
ngx_http_session_sticky_merge_loc_conf(ngx_conf_t *cf, void *parent,
    void *child)
{
    ngx_http_ss_loc_conf_t  *prev = parent;
    ngx_http_ss_loc_conf_t  *conf = child;

    ngx_conf_merge_ptr_value(conf->uscf, prev->uscf, NGX_CONF_UNSET_PTR);

    return NGX_CONF_OK;
}
示例#21
0
static char *
ngx_http_memcached_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_memcached_loc_conf_t *prev = parent;
    ngx_http_memcached_loc_conf_t *conf = child;

    ngx_conf_merge_ptr_value(conf->upstream.local,
                              prev->upstream.local, NULL);

    ngx_conf_merge_value(conf->upstream.socket_keepalive,
                              prev->upstream.socket_keepalive, 0);

    ngx_conf_merge_uint_value(conf->upstream.next_upstream_tries,
                              prev->upstream.next_upstream_tries, 0);

    ngx_conf_merge_msec_value(conf->upstream.connect_timeout,
                              prev->upstream.connect_timeout, 60000);

    ngx_conf_merge_msec_value(conf->upstream.send_timeout,
                              prev->upstream.send_timeout, 60000);

    ngx_conf_merge_msec_value(conf->upstream.read_timeout,
                              prev->upstream.read_timeout, 60000);

    ngx_conf_merge_msec_value(conf->upstream.next_upstream_timeout,
                              prev->upstream.next_upstream_timeout, 0);

    ngx_conf_merge_size_value(conf->upstream.buffer_size,
                              prev->upstream.buffer_size,
                              (size_t) ngx_pagesize);

    ngx_conf_merge_bitmask_value(conf->upstream.next_upstream,
                              prev->upstream.next_upstream,
                              (NGX_CONF_BITMASK_SET
                               |NGX_HTTP_UPSTREAM_FT_ERROR
                               |NGX_HTTP_UPSTREAM_FT_TIMEOUT));

    if (conf->upstream.next_upstream & NGX_HTTP_UPSTREAM_FT_OFF) {
        conf->upstream.next_upstream = NGX_CONF_BITMASK_SET
                                       |NGX_HTTP_UPSTREAM_FT_OFF;
    }

    if (conf->upstream.upstream == NULL) {
        conf->upstream.upstream = prev->upstream.upstream;
    }

    if (conf->index == NGX_CONF_UNSET) {
        conf->index = prev->index;
    }

    ngx_conf_merge_uint_value(conf->gzip_flag, prev->gzip_flag, 0);

    return NGX_CONF_OK;
}
示例#22
0
static char *
ngx_http_themis_merge_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_themis_loc_conf_t  *prev = parent;
    ngx_http_themis_loc_conf_t  *conf = child;

    ngx_conf_merge_value(conf->enable, prev->enable, 0);
    ngx_conf_merge_str_value(conf->name, prev->name, "");
    ngx_conf_merge_ptr_value(conf->module_configs, prev->module_configs, NULL);

    return NGX_CONF_OK;
}
示例#23
0
static char *ngx_proc_luashm_backup_merge_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_proc_luashm_backup_conf_t  *prev = parent;
    ngx_proc_luashm_backup_conf_t  *conf = child;

    //ngx_conf_merge_uint_value(conf->port, prev->port, 0);
    ngx_conf_merge_str_value(conf->path, prev->path, NULL);
	ngx_conf_merge_str_value(conf->settimestamp, prev->settimestamp, NULL);
	ngx_conf_merge_ptr_value(conf->shdict_names, prev->shdict_names, NGX_CONF_UNSET_PTR);

    return NGX_CONF_OK;
}
示例#24
0
文件: ngx_tcl.c 项目: ghfomp/ngx_tcl
static char *
ngx_tcl_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_tcl_loc_conf_t *prev = parent;
    ngx_tcl_loc_conf_t *conf = child;

printf("%s\n", __FUNCTION__); fflush(stdout);

    ngx_conf_merge_ptr_value(conf->interp_conf, prev->interp_conf, NULL);

    return NGX_CONF_OK;
}
static char *
ngx_http_proxy_connect_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_proxy_connect_loc_conf_t *prev = parent;
    ngx_http_proxy_connect_loc_conf_t *conf = child;


    if (ngx_http_merge_types(cf, &conf->block_ports, &conf->ports,
                             &prev->block_ports, &prev->ports,
                             ngx_http_proxy_connect_block_ports)
            != NGX_OK)
    {
        return NGX_CONF_ERROR;
    }
#if (NGX_PCRE)
    ngx_conf_merge_ptr_value(conf->black_hosts, prev->black_hosts, NGX_CONF_UNSET_PTR)
#endif

    ngx_conf_merge_msec_value(conf->upstream.connect_timeout,
                              prev->upstream.connect_timeout, 60000);

    ngx_conf_merge_msec_value(conf->upstream.send_timeout,
                              prev->upstream.send_timeout, 60000);

    ngx_conf_merge_msec_value(conf->upstream.read_timeout,
                              prev->upstream.read_timeout, 60000);

    ngx_conf_merge_size_value(conf->upstream.buffer_size,
                              prev->upstream.buffer_size,
                              (size_t) ngx_pagesize);

    ngx_conf_merge_bitmask_value(conf->upstream.next_upstream,
                                 prev->upstream.next_upstream,
                                 (NGX_CONF_BITMASK_SET
                                  |NGX_HTTP_UPSTREAM_FT_ERROR
                                  |NGX_HTTP_UPSTREAM_FT_TIMEOUT));

    if (conf->upstream.next_upstream & NGX_HTTP_UPSTREAM_FT_OFF) {
        conf->upstream.next_upstream = NGX_CONF_BITMASK_SET
                                       |NGX_HTTP_UPSTREAM_FT_OFF;
    }

    if (conf->upstream.upstream == NULL) {
        conf->upstream.upstream = prev->upstream.upstream;
    }

    if (conf->index == NGX_CONF_UNSET) {
        conf->index = prev->index;
    }

    return NGX_CONF_OK;
}
示例#26
0
static char *
ngx_http_ip_behavior_merge_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_ip_behavior_conf_t *prev = parent;
    ngx_http_ip_behavior_conf_t *conf = child;

    ngx_conf_merge_value(conf->enabled, prev->enabled, 0);
    ngx_conf_merge_value(conf->sensitive, prev->sensitive, 0);
    ngx_conf_merge_value(conf->type, prev->type, TYPE_SENSITIVE_URL);
    ngx_conf_merge_ptr_value(conf->shm_zone, prev->shm_zone, NULL);

    return NGX_CONF_OK;
}
static char*
ngx_http_gettoken_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_gettoken_loc_conf_t *prev = parent;
    ngx_http_gettoken_loc_conf_t *conf = child;
    ngx_conf_merge_value(conf->enable, prev->enable, 0);
    ngx_conf_merge_str_value(conf->auth_host, prev->auth_host, "");
    ngx_conf_merge_str_value(conf->auth_url, prev->auth_url, "");
    ngx_conf_merge_str_value(conf->token_host, prev->token_host, "");
    ngx_conf_merge_str_value(conf->token_url, prev->token_url, "");
    ngx_conf_merge_ptr_value(conf->servers, prev->servers, NULL);
    return    NGX_CONF_OK;

}
static char *
ngx_rtmp_notify_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_rtmp_notify_srv_conf_t *prev = parent;
    ngx_rtmp_notify_srv_conf_t *conf = child;
    ngx_uint_t                  n;

    for (n = 0; n < NGX_RTMP_NOTIFY_SRV_MAX; ++n) {
        ngx_conf_merge_ptr_value(conf->url[n], prev->url[n], NULL);
    }

    ngx_conf_merge_uint_value(conf->method, prev->method,
                              NGX_RTMP_NETCALL_HTTP_POST);

    return NGX_CONF_OK;
}
示例#29
0
    static char *
ngx_http_auth_spnego_merge_loc_conf(
        ngx_conf_t * cf,
        void *parent,
        void *child)
{
    ngx_http_auth_spnego_loc_conf_t *prev = parent;
    ngx_http_auth_spnego_loc_conf_t *conf = child;

    /* "off" by default */
    ngx_conf_merge_off_value(conf->protect, prev->protect, 0);

    ngx_conf_merge_str_value(conf->realm, prev->realm, "");
    ngx_conf_merge_str_value(conf->keytab, prev->keytab,
            "/etc/krb5.keytab");
    ngx_conf_merge_str_value(conf->srvcname, prev->srvcname, "");

    ngx_conf_merge_off_value(conf->fqun, prev->fqun, 0);
    ngx_conf_merge_off_value(conf->force_realm, prev->force_realm, 0);
    ngx_conf_merge_off_value(conf->allow_basic, prev->allow_basic, 1);
    ngx_conf_merge_ptr_value(conf->auth_princs, prev->auth_princs, NGX_CONF_UNSET_PTR);

#if (NGX_DEBUG)
    ngx_conf_log_error(NGX_LOG_INFO, cf, 0, "auth_spnego: protect = %i",
            conf->protect);
    ngx_conf_log_error(NGX_LOG_INFO, cf, 0, "auth_spnego: realm@0x%p = %s",
            conf->realm.data, conf->realm.data);
    ngx_conf_log_error(NGX_LOG_INFO, cf, 0,
            "auth_spnego: keytab@0x%p = %s", conf->keytab.data,
            conf->keytab.data);
    ngx_conf_log_error(NGX_LOG_INFO, cf, 0,
            "auth_spnego: srvcname@0x%p = %s",
            conf->srvcname.data, conf->srvcname.data);
    ngx_conf_log_error(NGX_LOG_INFO, cf, 0, "auth_spnego: fqun = %i",
            conf->fqun);
    if (NGX_CONF_UNSET_PTR != conf->auth_princs) {
        size_t ii = 0;
        ngx_str_t *auth_princs = conf->auth_princs->elts;
        for (; ii < conf->auth_princs->nelts; ++ii) {
            ngx_conf_log_error(NGX_LOG_DEBUG, cf, 0,
                    "auth_spnego: auth_princs = %.*s", auth_princs[ii].len, auth_princs[ii].data);
        }
    }
#endif

    return NGX_CONF_OK;
}
static char *
ngx_http_fancyindex_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_fancyindex_loc_conf_t *prev = parent;
    ngx_http_fancyindex_loc_conf_t *conf = child;

    ngx_conf_merge_value(conf->enable, prev->enable, 0);
    ngx_conf_merge_value(conf->localtime, prev->localtime, 0);
    ngx_conf_merge_value(conf->exact_size, prev->exact_size, 1);

    ngx_conf_merge_str_value(conf->header, prev->header, "");
    ngx_conf_merge_str_value(conf->footer, prev->footer, "");

    ngx_conf_merge_ptr_value(conf->ignore, prev->ignore, NULL);

    return NGX_CONF_OK;
}