//AUTOGENERATED, do not edit! see nchan_commands.rb
static ngx_conf_post_t nchan_redis_namespace__post_handler = {
  ngx_conf_process_redis_namespace_slot
};

static ngx_command_t  nchan_commands[] = {
    { ngx_string("nchan_channel_id"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7,
    nchan_set_pubsub_channel_id,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_pubsub_channel_id"), //alt for nchan_channel_id
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7,
    nchan_set_pubsub_channel_id,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_publisher_channel_id"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7,
    nchan_set_pub_channel_id,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_pub_channel_id"), //alt for nchan_publisher_channel_id
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7,
    nchan_set_pub_channel_id,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_publisher_upstream_request"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, publisher_upstream_request_url),
    NULL } ,
  { ngx_string("nchan_publisher_upstream_request"), //alt for nchan_publisher_upstream_request
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, publisher_upstream_request_url),
    NULL } ,

  { ngx_string("nchan_deflate_message_for_websocket"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_set_message_compression_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_deflate_message_for_websocket"), //alt for nchan_deflate_message_for_websocket
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_set_message_compression_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_channel_id_split_delimiter"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, channel_id_split_delimiter),
    NULL } ,
  { ngx_string("nchan_channel_id_split_delimiter"), //alt for nchan_channel_id_split_delimiter
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, channel_id_split_delimiter),
    NULL } ,

  { ngx_string("nchan_subscriber_channel_id"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7,
    nchan_set_sub_channel_id,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_sub_channel_id"), //alt for nchan_subscriber_channel_id
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7,
    nchan_set_sub_channel_id,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_pubsub"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6,
    nchan_pubsub_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_pubsub_location"), //alt for nchan_pubsub
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6,
    nchan_pubsub_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_subscriber_info"),
    NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,
    nchan_subscriber_info_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_subscriber_info"), //alt for nchan_subscriber_info
    NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,
    nchan_subscriber_info_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_subscriber_info_string"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, subscriber_info_string),
    NULL } ,
  { ngx_string("nchan_subscriber_info_string"), //alt for nchan_subscriber_info_string
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, subscriber_info_string),
    NULL } ,

  { ngx_string("nchan_longpoll_multipart_response"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_set_longpoll_multipart,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, longpoll_multimsg),
    NULL } ,
  { ngx_string("nchan_longpoll_multipart_response"), //alt for nchan_longpoll_multipart_response
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_set_longpoll_multipart,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, longpoll_multimsg),
    NULL } ,

  { ngx_string("nchan_eventsource_event"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, eventsource_event),
    NULL } ,
  { ngx_string("nchan_eventsource_event"), //alt for nchan_eventsource_event
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, eventsource_event),
    NULL } ,

  { ngx_string("nchan_eventsource_ping_comment"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot_no_newlines,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, eventsource_ping.comment),
    NULL } ,
  { ngx_string("nchan_eventsource_ping_comment"), //alt for nchan_eventsource_ping_comment
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot_no_newlines,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, eventsource_ping.comment),
    NULL } ,

  { ngx_string("nchan_eventsource_ping_event"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot_no_newlines,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, eventsource_ping.event),
    NULL } ,
  { ngx_string("nchan_eventsource_ping_event"), //alt for nchan_eventsource_ping_event
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot_no_newlines,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, eventsource_ping.event),
    NULL } ,

  { ngx_string("nchan_eventsource_ping_data"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot_no_newlines,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, eventsource_ping.data),
    NULL } ,
  { ngx_string("nchan_eventsource_ping_data"), //alt for nchan_eventsource_ping_data
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot_no_newlines,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, eventsource_ping.data),
    NULL } ,

  { ngx_string("nchan_eventsource_ping_interval"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, eventsource_ping.interval),
    NULL } ,
  { ngx_string("nchan_eventsource_ping_interval"), //alt for nchan_eventsource_ping_interval
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, eventsource_ping.interval),
    NULL } ,

  { ngx_string("nchan_subscriber"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5,
    nchan_subscriber_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("push_subscriber"), //legacy for nchan_subscriber
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5,
    nchan_subscriber_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_subscriber_location"), //alt for nchan_subscriber
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5,
    nchan_subscriber_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_subscriber_compound_etag_message_id"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, msg_in_etag_only),
    NULL } ,
  { ngx_string("nchan_subscriber_compound_etag_message_id"), //alt for nchan_subscriber_compound_etag_message_id
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, msg_in_etag_only),
    NULL } ,

  { ngx_string("nchan_subscriber_message_id_custom_etag_header"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, custom_msgtag_header),
    NULL } ,
  { ngx_string("nchan_subscriber_message_id_custom_etag_header"), //alt for nchan_subscriber_message_id_custom_etag_header
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, custom_msgtag_header),
    NULL } ,

  { ngx_string("nchan_subscriber_last_message_id"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5,
    nchan_subscriber_last_message_id,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_subscriber_last_message_id"), //alt for nchan_subscriber_last_message_id
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5,
    nchan_subscriber_last_message_id,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_subscriber_http_raw_stream_separator"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_set_raw_subscriber_separator,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, subscriber_http_raw_stream_separator),
    NULL } ,
  { ngx_string("nchan_subscriber_http_raw_stream_separator"), //alt for nchan_subscriber_http_raw_stream_separator
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_set_raw_subscriber_separator,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, subscriber_http_raw_stream_separator),
    NULL } ,

  { ngx_string("nchan_subscriber_first_message"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_subscriber_first_message_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_subscriber_first_message"), //alt for nchan_subscriber_first_message
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_subscriber_first_message_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_websocket_ping_interval"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, websocket_ping_interval),
    NULL } ,
  { ngx_string("nchan_websocket_ping_interval"), //alt for nchan_websocket_ping_interval
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, websocket_ping_interval),
    NULL } ,

  { ngx_string("nchan_websocket_client_heartbeat"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE2,
    nchan_websocket_heartbeat_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, websocket_heartbeat),
    NULL } ,
  { ngx_string("nchan_websocket_client_heartbeat"), //alt for nchan_websocket_client_heartbeat
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE2,
    nchan_websocket_heartbeat_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, websocket_heartbeat),
    NULL } ,

  { ngx_string("nchan_publisher"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2,
    nchan_publisher_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("push_publisher"), //legacy for nchan_publisher
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2,
    nchan_publisher_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_publisher_location"), //alt for nchan_publisher
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2,
    nchan_publisher_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_subscriber_timeout"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, subscriber_timeout),
    NULL } ,
  { ngx_string("push_subscriber_timeout"), //legacy for nchan_subscriber_timeout
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, subscriber_timeout),
    NULL } ,
  { ngx_string("nchan_subscriber_timeout"), //alt for nchan_subscriber_timeout
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, subscriber_timeout),
    NULL } ,

  { ngx_string("nchan_authorize_request"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, authorize_request_url),
    NULL } ,
  { ngx_string("nchan_authorize_request"), //alt for nchan_authorize_request
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, authorize_request_url),
    NULL } ,

  { ngx_string("nchan_subscribe_request"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, subscribe_request_url),
    NULL } ,
  { ngx_string("nchan_subscribe_request"), //alt for nchan_subscribe_request
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, subscribe_request_url),
    NULL } ,

  { ngx_string("nchan_unsubscribe_request"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_unsubscribe_request_url,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, unsubscribe_request_url),
    NULL } ,
  { ngx_string("nchan_unsubscribe_request"), //alt for nchan_unsubscribe_request
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_unsubscribe_request_url,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, unsubscribe_request_url),
    NULL } ,

  { ngx_string("nchan_message_temp_path"),
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_path_slot,
    NGX_HTTP_MAIN_CONF_OFFSET,
    offsetof(nchan_main_conf_t, message_temp_path),
    NULL } ,
  { ngx_string("nchan_message_temp_path"), //alt for nchan_message_temp_path
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_path_slot,
    NGX_HTTP_MAIN_CONF_OFFSET,
    offsetof(nchan_main_conf_t, message_temp_path),
    NULL } ,

  { ngx_string("nchan_store_messages"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_store_messages_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("push_store_messages"), //legacy for nchan_store_messages
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_store_messages_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_store_messages"), //alt for nchan_store_messages
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_store_messages_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_shared_memory_size"),
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    nchan_conf_set_size_slot,
    NGX_HTTP_MAIN_CONF_OFFSET,
    offsetof(nchan_main_conf_t, shm_size),
    NULL } ,
  { ngx_string("push_max_reserved_memory"), //legacy for nchan_shared_memory_size
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    nchan_conf_set_size_slot,
    NGX_HTTP_MAIN_CONF_OFFSET,
    offsetof(nchan_main_conf_t, shm_size),
    NULL } ,
  { ngx_string("nchan_max_reserved_memory"), //legacy for nchan_shared_memory_size
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    nchan_conf_set_size_slot,
    NGX_HTTP_MAIN_CONF_OFFSET,
    offsetof(nchan_main_conf_t, shm_size),
    NULL } ,
  { ngx_string("nchan_shared_memory_size"), //alt for nchan_shared_memory_size
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    nchan_conf_set_size_slot,
    NGX_HTTP_MAIN_CONF_OFFSET,
    offsetof(nchan_main_conf_t, shm_size),
    NULL } ,

  { ngx_string("nchan_permessage_deflate_compression_level"),
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    nchan_conf_deflate_compression_level_directive,
    NGX_HTTP_MAIN_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_permessage_deflate_compression_level"), //alt for nchan_permessage_deflate_compression_level
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    nchan_conf_deflate_compression_level_directive,
    NGX_HTTP_MAIN_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_permessage_deflate_compression_strategy"),
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    nchan_conf_deflate_compression_strategy_directive,
    NGX_HTTP_MAIN_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_permessage_deflate_compression_strategy"), //alt for nchan_permessage_deflate_compression_strategy
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    nchan_conf_deflate_compression_strategy_directive,
    NGX_HTTP_MAIN_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_permessage_deflate_compression_window"),
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    nchan_conf_deflate_compression_window_directive,
    NGX_HTTP_MAIN_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_permessage_deflate_compression_window"), //alt for nchan_permessage_deflate_compression_window
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    nchan_conf_deflate_compression_window_directive,
    NGX_HTTP_MAIN_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_permessage_deflate_compression_memlevel"),
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    nchan_conf_deflate_compression_memlevel_directive,
    NGX_HTTP_MAIN_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_permessage_deflate_compression_memlevel"), //alt for nchan_permessage_deflate_compression_memlevel
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    nchan_conf_deflate_compression_memlevel_directive,
    NGX_HTTP_MAIN_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_redis_url"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_redis_url,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.url),
    NULL } ,
  { ngx_string("nchan_redis_url"), //alt for nchan_redis_url
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_redis_url,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.url),
    NULL } ,

  { ngx_string("nchan_redis_pass"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_redis_upstream_pass,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis),
    NULL } ,
  { ngx_string("nchan_redis_pass"), //alt for nchan_redis_pass
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_redis_upstream_pass,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis),
    NULL } ,

  { ngx_string("nchan_redis_pass_inheritable"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.upstream_inheritable),
    NULL } ,
  { ngx_string("nchan_redis_pass_inheritable"), //alt for nchan_redis_pass_inheritable
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.upstream_inheritable),
    NULL } ,

  { ngx_string("nchan_redis_publish_msgpacked_max_size"),
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_size_slot,
    NGX_HTTP_MAIN_CONF_OFFSET,
    offsetof(nchan_main_conf_t, redis_publish_message_msgkey_size),
    NULL } ,
  { ngx_string("nchan_redis_publish_msgpacked_max_size"), //alt for nchan_redis_publish_msgpacked_max_size
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_size_slot,
    NGX_HTTP_MAIN_CONF_OFFSET,
    offsetof(nchan_main_conf_t, redis_publish_message_msgkey_size),
    NULL } ,

  { ngx_string("nchan_redis_discovered_ip_range_blacklist"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7,
    ngx_conf_set_redis_ip_blacklist,
    NGX_HTTP_SRV_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_redis_discovered_ip_range_blacklist"), //alt for nchan_redis_discovered_ip_range_blacklist
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7,
    ngx_conf_set_redis_ip_blacklist,
    NGX_HTTP_SRV_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_redis_server"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_upstream_redis_server,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_redis_server"), //alt for nchan_redis_server
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_upstream_redis_server,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_redis_storage_mode"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_redis_storage_mode_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.storage_mode),
    NULL } ,
  { ngx_string("nchan_redis_storage_mode"), //alt for nchan_redis_storage_mode
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_redis_storage_mode_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.storage_mode),
    NULL } ,

  { ngx_string("nchan_redis_nostore_fastpublish"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.nostore_fastpublish),
    NULL } ,
  { ngx_string("nchan_redis_nostore_fastpublish"), //alt for nchan_redis_nostore_fastpublish
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.nostore_fastpublish),
    NULL } ,

  { ngx_string("nchan_redis_username"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.username),
    NULL } ,
  { ngx_string("nchan_redis_username"), //alt for nchan_redis_username
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.username),
    NULL } ,

  { ngx_string("nchan_redis_password"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.password),
    NULL } ,
  { ngx_string("nchan_redis_password"), //alt for nchan_redis_password
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.password),
    NULL } ,

  { ngx_string("nchan_redis_ssl"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.enabled),
    NULL } ,
  { ngx_string("nchan_redis_tls"), //alt for nchan_redis_ssl
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.enabled),
    NULL } ,

  { ngx_string("nchan_redis_ssl_client_certificate"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.client_certificate),
    NULL } ,
  { ngx_string("nchan_redis_tls_client_certificate"), //alt for nchan_redis_ssl_client_certificate
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.client_certificate),
    NULL } ,

  { ngx_string("nchan_redis_ssl_client_certificate_key"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.client_certificate_key),
    NULL } ,
  { ngx_string("nchan_redis_tls_client_certificate"), //alt for nchan_redis_ssl_client_certificate_key
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.client_certificate_key),
    NULL } ,

  { ngx_string("nchan_redis_ssl_server_name"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.server_name),
    NULL } ,
  { ngx_string("nchan_redis_tls_server_name"), //alt for nchan_redis_ssl_server_name
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.server_name),
    NULL } ,

  { ngx_string("nchan_redis_ssl_trusted_certificate"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.trusted_certificate),
    NULL } ,
  { ngx_string("nchan_redis_tls_trusted_certificate"), //alt for nchan_redis_ssl_trusted_certificate
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.trusted_certificate),
    NULL } ,

  { ngx_string("nchan_redis_ssl_trusted_certificate_path"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.trusted_certificate_path),
    NULL } ,
  { ngx_string("nchan_redis_tls_trusted_certificate_path"), //alt for nchan_redis_ssl_trusted_certificate_path
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.trusted_certificate_path),
    NULL } ,

  { ngx_string("nchan_redis_ssl_ciphers"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.ciphers),
    NULL } ,
  { ngx_string("nchan_redis_tls_ciphers"), //alt for nchan_redis_ssl_ciphers
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.ciphers),
    NULL } ,

  { ngx_string("nchan_redis_ssl_verify_certificate"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.ciphers),
    NULL } ,
  { ngx_string("nchan_redis_tls_verify_certificate"), //alt for nchan_redis_ssl_verify_certificate
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.tls.ciphers),
    NULL } ,

  { ngx_string("nchan_use_redis"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_enable_redis,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.url_enabled),
    NULL } ,
  { ngx_string("nchan_use_redis"), //alt for nchan_use_redis
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_enable_redis,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.url_enabled),
    NULL } ,

  { ngx_string("nchan_redis_ping_interval"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.ping_interval),
    NULL } ,
  { ngx_string("nchan_redis_ping_interval"), //alt for nchan_redis_ping_interval
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.ping_interval),
    NULL } ,

  { ngx_string("nchan_redis_cluster_check_interval"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.cluster_check_interval),
    NULL } ,
  { ngx_string("nchan_redis_cluster_check_interval"), //alt for nchan_redis_cluster_check_interval
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.cluster_check_interval),
    NULL } ,

  { ngx_string("nchan_redis_wait_after_connecting"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_ignore_obsolete_setting,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_redis_wait_after_connecting"), //alt for nchan_redis_wait_after_connecting
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_ignore_obsolete_setting,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_redis_connect_timeout"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_msec_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.connect_timeout),
    NULL } ,
  { ngx_string("nchan_redis_connect_timeout"), //alt for nchan_redis_connect_timeout
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_msec_slot,
    NGX_HTTP_SRV_CONF_OFFSET,
    offsetof(nchan_srv_conf_t, redis.connect_timeout),
    NULL } ,

  { ngx_string("nchan_redis_subscribe_weights"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2,
    ngx_conf_set_redis_subscribe_weights,
    NGX_HTTP_SRV_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_redis_subscribe_weights"), //alt for nchan_redis_subscribe_weights
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2,
    ngx_conf_set_redis_subscribe_weights,
    NGX_HTTP_SRV_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_redis_optimize_target"),
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_redis_optimize_target,
    NGX_HTTP_SRV_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_redis_optimize_target"), //alt for nchan_redis_optimize_target
    NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_redis_optimize_target,
    NGX_HTTP_SRV_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_redis_namespace"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.namespace),
    &nchan_redis_namespace__post_handler } ,
  { ngx_string("nchan_redis_namespace"), //alt for nchan_redis_namespace
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_str_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis.namespace),
    &nchan_redis_namespace__post_handler } ,

  { ngx_string("nchan_redis_fakesub_timer_interval"),
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_msec_slot,
    NGX_HTTP_MAIN_CONF_OFFSET,
    offsetof(nchan_main_conf_t, redis_fakesub_timer_interval),
    NULL } ,
  { ngx_string("nchan_redis_fakesub_timer_interval"), //alt for nchan_redis_fakesub_timer_interval
    NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_msec_slot,
    NGX_HTTP_MAIN_CONF_OFFSET,
    offsetof(nchan_main_conf_t, redis_fakesub_timer_interval),
    NULL } ,

  { ngx_string("nchan_redis_idle_channel_cache_timeout"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis_idle_channel_cache_timeout),
    NULL } ,
  { ngx_string("nchan_redis_idle_channel_cache_timeout"), //alt for nchan_redis_idle_channel_cache_timeout
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, redis_idle_channel_cache_timeout),
    NULL } ,

  { ngx_string("nchan_message_timeout"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_set_message_timeout,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, message_timeout),
    NULL } ,
  { ngx_string("push_message_timeout"), //legacy for nchan_message_timeout
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_set_message_timeout,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, message_timeout),
    NULL } ,
  { ngx_string("nchan_message_timeout"), //alt for nchan_message_timeout
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_set_message_timeout,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, message_timeout),
    NULL } ,

  { ngx_string("nchan_message_buffer_length"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_set_message_buffer_length,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, max_messages),
    NULL } ,
  { ngx_string("push_max_message_buffer_length"), //legacy for nchan_message_buffer_length
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_set_message_buffer_length,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, max_messages),
    NULL } ,
  { ngx_string("push_message_buffer_length"), //legacy for nchan_message_buffer_length
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_set_message_buffer_length,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, max_messages),
    NULL } ,
  { ngx_string("nchan_message_max_buffer_length"), //alt for nchan_message_buffer_length
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_set_message_buffer_length,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, max_messages),
    NULL } ,

  { ngx_string("nchan_subscribe_existing_channels_only"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, subscribe_only_existing_channel),
    NULL } ,
  { ngx_string("push_authorized_channels_only"), //legacy for nchan_subscribe_existing_channels_only
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, subscribe_only_existing_channel),
    NULL } ,
  { ngx_string("nchan_subscribe_existing_channels_only"), //alt for nchan_subscribe_existing_channels_only
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, subscribe_only_existing_channel),
    NULL } ,

  { ngx_string("nchan_access_control_allow_origin"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, allow_origin),
    NULL } ,
  { ngx_string("nchan_access_control_allow_origin"), //alt for nchan_access_control_allow_origin
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, allow_origin),
    NULL } ,

  { ngx_string("nchan_access_control_allow_credentials"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, allow_credentials),
    NULL } ,
  { ngx_string("nchan_access_control_allow_credentials"), //alt for nchan_access_control_allow_credentials
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, allow_credentials),
    NULL } ,

  { ngx_string("nchan_channel_group"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, channel_group),
    NULL } ,
  { ngx_string("push_channel_group"), //legacy for nchan_channel_group
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, channel_group),
    NULL } ,
  { ngx_string("nchan_channel_group"), //alt for nchan_channel_group
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, channel_group),
    NULL } ,

  { ngx_string("nchan_channel_group_accounting"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, group.enable_accounting),
    NULL } ,
  { ngx_string("nchan_channel_group_accounting"), //alt for nchan_channel_group_accounting
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_flag_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, group.enable_accounting),
    NULL } ,

  { ngx_string("nchan_group_location"),
    NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3,
    nchan_group_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_group_location"), //alt for nchan_group_location
    NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3,
    nchan_group_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_group_max_channels"),
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, group.max_channels),
    NULL } ,
  { ngx_string("nchan_group_max_channels"), //alt for nchan_group_max_channels
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, group.max_channels),
    NULL } ,

  { ngx_string("nchan_group_max_messages"),
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, group.max_messages),
    NULL } ,
  { ngx_string("nchan_group_max_messages"), //alt for nchan_group_max_messages
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, group.max_messages),
    NULL } ,

  { ngx_string("nchan_group_max_messages_memory"),
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, group.max_messages_shm_bytes),
    NULL } ,
  { ngx_string("nchan_group_max_messages_memory"), //alt for nchan_group_max_messages_memory
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, group.max_messages_shm_bytes),
    NULL } ,

  { ngx_string("nchan_group_max_messages_disk"),
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, group.max_messages_file_bytes),
    NULL } ,
  { ngx_string("nchan_group_max_messages_disk"), //alt for nchan_group_max_messages_disk
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, group.max_messages_file_bytes),
    NULL } ,

  { ngx_string("nchan_group_max_subscribers"),
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, group.max_subscribers),
    NULL } ,
  { ngx_string("nchan_group_max_subscribers"), //alt for nchan_group_max_subscribers
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, group.max_subscribers),
    NULL } ,

  { ngx_string("nchan_channel_events_channel_id"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_set_channel_events_channel_id,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_channel_events_channel_id"), //alt for nchan_channel_events_channel_id
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_set_channel_events_channel_id,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_stub_status"),
    NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,
    nchan_stub_status_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_stub_status"), //alt for nchan_stub_status
    NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,
    nchan_stub_status_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_channel_event_string"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, channel_event_string),
    NULL } ,
  { ngx_string("nchan_channel_event_string"), //alt for nchan_channel_event_string
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    ngx_http_set_complex_value_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, channel_event_string),
    NULL } ,

  { ngx_string("nchan_max_channel_id_length"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_num_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, max_channel_id_length),
    NULL } ,
  { ngx_string("push_max_channel_id_length"), //legacy for nchan_max_channel_id_length
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_num_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, max_channel_id_length),
    NULL } ,
  { ngx_string("nchan_max_channel_id_length"), //alt for nchan_max_channel_id_length
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_num_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, max_channel_id_length),
    NULL } ,

  { ngx_string("nchan_max_channel_subscribers"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_num_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, max_channel_subscribers),
    NULL } ,
  { ngx_string("push_max_channel_subscribers"), //legacy for nchan_max_channel_subscribers
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_num_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, max_channel_subscribers),
    NULL } ,
  { ngx_string("nchan_max_channel_subscribers"), //alt for nchan_max_channel_subscribers
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_num_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, max_channel_subscribers),
    NULL } ,

  { ngx_string("nchan_channel_timeout"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, channel_timeout),
    NULL } ,
  { ngx_string("push_channel_timeout"), //legacy for nchan_channel_timeout
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, channel_timeout),
    NULL } ,
  { ngx_string("nchan_channel_timeout"), //alt for nchan_channel_timeout
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, channel_timeout),
    NULL } ,

  { ngx_string("nchan_storage_engine"),
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_set_storage_engine,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, storage_engine),
    NULL } ,
  { ngx_string("nchan_storage_engine"), //alt for nchan_storage_engine
    NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_set_storage_engine,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, storage_engine),
    NULL } ,

  { ngx_string("nchan_benchmark"),
    NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,
    nchan_benchmark_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("nchan_benchmark"), //alt for nchan_benchmark
    NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,
    nchan_benchmark_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("nchan_benchmark_time"),
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, benchmark.time),
    NULL } ,
  { ngx_string("nchan_benchmark_time"), //alt for nchan_benchmark_time
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_sec_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, benchmark.time),
    NULL } ,

  { ngx_string("nchan_benchmark_messages_per_channel_per_minute"),
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_num_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, benchmark.msgs_per_minute),
    NULL } ,
  { ngx_string("nchan_benchmark_messages_per_channel_per_minute"), //alt for nchan_benchmark_messages_per_channel_per_minute
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_num_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, benchmark.msgs_per_minute),
    NULL } ,

  { ngx_string("nchan_benchmark_message_padding_bytes"),
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_num_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, benchmark.msg_padding),
    NULL } ,
  { ngx_string("nchan_benchmark_message_padding_bytes"), //alt for nchan_benchmark_message_padding_bytes
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_num_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, benchmark.msg_padding),
    NULL } ,

  { ngx_string("nchan_benchmark_channels"),
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_num_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, benchmark.channels),
    NULL } ,
  { ngx_string("nchan_benchmark_channels"), //alt for nchan_benchmark_channels
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_num_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, benchmark.channels),
    NULL } ,

  { ngx_string("nchan_benchmark_subscribers_per_channel"),
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_num_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, benchmark.subscribers_per_channel),
    NULL } ,
  { ngx_string("nchan_benchmark_subscribers_per_channel"), //alt for nchan_benchmark_subscribers_per_channel
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    ngx_conf_set_num_slot,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, benchmark.subscribers_per_channel),
    NULL } ,

  { ngx_string("nchan_benchmark_subscriber_distribution"),
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_benchmark_subscriber_distribution_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, benchmark.subscriber_distribution),
    NULL } ,
  { ngx_string("nchan_benchmark_subscriber_distribution"), //alt for nchan_benchmark_subscriber_distribution
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_benchmark_subscriber_distribution_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, benchmark.subscriber_distribution),
    NULL } ,

  { ngx_string("nchan_benchmark_publisher_distribution"),
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_benchmark_publisher_distribution_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, benchmark.publisher_distribution),
    NULL } ,
  { ngx_string("nchan_benchmark_publisher_distribution"), //alt for nchan_benchmark_publisher_distribution
    NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    nchan_benchmark_publisher_distribution_directive,
    NGX_HTTP_LOC_CONF_OFFSET,
    offsetof(nchan_loc_conf_t, benchmark.publisher_distribution),
    NULL } ,

  { ngx_string("push_min_message_buffer_length"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_ignore_obsolete_setting,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("push_min_message_buffer_length"), //alt for push_min_message_buffer_length
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_ignore_obsolete_setting,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,

  { ngx_string("push_subscriber_concurrency"),
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_ignore_subscriber_concurrency,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,
  { ngx_string("push_subscriber_concurrency"), //alt for push_subscriber_concurrency
    NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
    nchan_ignore_subscriber_concurrency,
    NGX_HTTP_LOC_CONF_OFFSET,
    0,
    NULL } ,


  ngx_null_command
};
