Skip to content

Commit

Permalink
Mirror: "off" paramater of the "mirror" directive.
Browse files Browse the repository at this point in the history
  • Loading branch information
arut committed Jul 21, 2017
1 parent 3900d1c commit fb18ba2
Showing 1 changed file with 43 additions and 2 deletions.
45 changes: 43 additions & 2 deletions src/http/modules/ngx_http_mirror_module.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,17 @@ static ngx_int_t ngx_http_mirror_handler_internal(ngx_http_request_t *r);
static void *ngx_http_mirror_create_loc_conf(ngx_conf_t *cf);
static char *ngx_http_mirror_merge_loc_conf(ngx_conf_t *cf, void *parent,
void *child);
static char *ngx_http_mirror(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
static ngx_int_t ngx_http_mirror_init(ngx_conf_t *cf);


static ngx_command_t ngx_http_mirror_commands[] = {

{ ngx_string("mirror"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
ngx_conf_set_str_array_slot,
ngx_http_mirror,
NGX_HTTP_LOC_CONF_OFFSET,
offsetof(ngx_http_mirror_loc_conf_t, mirror),
0,
NULL },

{ ngx_string("mirror_request_body"),
Expand Down Expand Up @@ -204,6 +205,46 @@ ngx_http_mirror_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
}


static char *
ngx_http_mirror(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
ngx_http_mirror_loc_conf_t *mlcf = conf;

ngx_str_t *value, *s;

value = cf->args->elts;

if (ngx_strcmp(value[1].data, "off") == 0) {
if (mlcf->mirror != NGX_CONF_UNSET_PTR) {
return "is duplicate";
}

mlcf->mirror = NULL;
return NGX_CONF_OK;
}

if (mlcf->mirror == NULL) {
return "is duplicate";
}

if (mlcf->mirror == NGX_CONF_UNSET_PTR) {
mlcf->mirror = ngx_array_create(cf->pool, 4, sizeof(ngx_str_t));
if (mlcf->mirror == NULL) {
return NGX_CONF_ERROR;
}
}

s = ngx_array_push(mlcf->mirror);
if (s == NULL) {
return NGX_CONF_ERROR;
}

*s = value[1];

return NGX_CONF_OK;
}


static ngx_int_t
ngx_http_mirror_init(ngx_conf_t *cf)
{
Expand Down

0 comments on commit fb18ba2

Please sign in to comment.