aboutsummaryrefslogtreecommitdiff
path: root/src/stream/ngx_stream_upstream.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/stream/ngx_stream_upstream.c')
-rw-r--r--src/stream/ngx_stream_upstream.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/stream/ngx_stream_upstream.c b/src/stream/ngx_stream_upstream.c
index be4f13016..6526d3c22 100644
--- a/src/stream/ngx_stream_upstream.c
+++ b/src/stream/ngx_stream_upstream.c
@@ -22,6 +22,11 @@ static char *ngx_stream_upstream(ngx_conf_t *cf, ngx_command_t *cmd,
void *dummy);
static char *ngx_stream_upstream_server(ngx_conf_t *cf, ngx_command_t *cmd,
void *conf);
+#if (NGX_STREAM_UPSTREAM_ZONE)
+static char *ngx_stream_upstream_resolver(ngx_conf_t *cf, ngx_command_t *cmd,
+ void *conf);
+#endif
+
static void *ngx_stream_upstream_create_main_conf(ngx_conf_t *cf);
static char *ngx_stream_upstream_init_main_conf(ngx_conf_t *cf, void *conf);
@@ -42,6 +47,24 @@ static ngx_command_t ngx_stream_upstream_commands[] = {
0,
NULL },
+#if (NGX_STREAM_UPSTREAM_ZONE)
+
+ { ngx_string("resolver"),
+ NGX_STREAM_UPS_CONF|NGX_CONF_1MORE,
+ ngx_stream_upstream_resolver,
+ NGX_STREAM_SRV_CONF_OFFSET,
+ 0,
+ NULL },
+
+ { ngx_string("resolver_timeout"),
+ NGX_STREAM_UPS_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_msec_slot,
+ NGX_STREAM_SRV_CONF_OFFSET,
+ offsetof(ngx_stream_upstream_srv_conf_t, resolver_timeout),
+ NULL },
+
+#endif
+
ngx_null_command
};
@@ -661,6 +684,32 @@ not_supported:
}
+#if (NGX_STREAM_UPSTREAM_ZONE)
+
+static char *
+ngx_stream_upstream_resolver(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
+{
+ ngx_stream_upstream_srv_conf_t *uscf = conf;
+
+ ngx_str_t *value;
+
+ if (uscf->resolver) {
+ return "is duplicate";
+ }
+
+ value = cf->args->elts;
+
+ uscf->resolver = ngx_resolver_create(cf, &value[1], cf->args->nelts - 1);
+ if (uscf->resolver == NULL) {
+ return NGX_CONF_ERROR;
+ }
+
+ return NGX_CONF_OK;
+}
+
+#endif
+
+
ngx_stream_upstream_srv_conf_t *
ngx_stream_upstream_add(ngx_conf_t *cf, ngx_url_t *u, ngx_uint_t flags)
{
@@ -739,6 +788,9 @@ ngx_stream_upstream_add(ngx_conf_t *cf, ngx_url_t *u, ngx_uint_t flags)
uscf->line = cf->conf_file->line;
uscf->port = u->port;
uscf->no_port = u->no_port;
+#if (NGX_STREAM_UPSTREAM_ZONE)
+ uscf->resolver_timeout = NGX_CONF_UNSET_MSEC;
+#endif
if (u->naddrs == 1 && (u->port || u->family == AF_UNIX)) {
uscf->servers = ngx_array_create(cf->pool, 1,