Fixed processing of SERVER_NAME after 77aad2c142a0.
Previously, the nxt_router_prepare_msg() function expected server host among other headers unmodified. It's not true anymore since normalization of the Host header has been introduced in 77aad2c142a0. The nxt_unit_split_host() function was removed. It didn't work correctly with IPv6 literals. Anyway, after 77aad2c142a0 the port splitting is done in router while Host header processing.
This commit is contained in:
@@ -72,7 +72,7 @@ static PyObject *nxt_python_get_environ(nxt_python_run_ctx_t *ctx);
|
||||
static int nxt_python_add_sptr(nxt_python_run_ctx_t *ctx, const char *name,
|
||||
nxt_unit_sptr_t *sptr, uint32_t size);
|
||||
static int nxt_python_add_str(nxt_python_run_ctx_t *ctx, const char *name,
|
||||
char *str, uint32_t size);
|
||||
const char *str, uint32_t size);
|
||||
|
||||
static PyObject *nxt_py_start_resp(PyObject *self, PyObject *args);
|
||||
static int nxt_python_response_add_field(nxt_python_run_ctx_t *ctx,
|
||||
@@ -690,8 +690,8 @@ static PyObject *
|
||||
nxt_python_get_environ(nxt_python_run_ctx_t *ctx)
|
||||
{
|
||||
int rc;
|
||||
char *name, *host_start, *port_start;
|
||||
uint32_t i, host_length, port_length;
|
||||
char *name;
|
||||
uint32_t i;
|
||||
PyObject *environ;
|
||||
nxt_unit_field_t *f;
|
||||
nxt_unit_request_t *r;
|
||||
@@ -732,6 +732,10 @@ nxt_python_get_environ(nxt_python_run_ctx_t *ctx)
|
||||
RC(nxt_python_add_sptr(ctx, "SERVER_PROTOCOL", &r->version,
|
||||
r->version_length));
|
||||
|
||||
RC(nxt_python_add_sptr(ctx, "SERVER_NAME", &r->server_name,
|
||||
r->server_name_length));
|
||||
RC(nxt_python_add_str(ctx, "SERVER_PORT", "80", 2));
|
||||
|
||||
for (i = 0; i < r->fields_count; i++) {
|
||||
f = r->fields + i;
|
||||
name = nxt_unit_sptr_get(&f->name);
|
||||
@@ -753,23 +757,6 @@ nxt_python_get_environ(nxt_python_run_ctx_t *ctx)
|
||||
f->value_length));
|
||||
}
|
||||
|
||||
if (r->host_field != NXT_UNIT_NONE_FIELD) {
|
||||
f = r->fields + r->host_field;
|
||||
|
||||
host_start = nxt_unit_sptr_get(&f->value);
|
||||
host_length = f->value_length;
|
||||
|
||||
} else {
|
||||
host_start = NULL;
|
||||
host_length = 0;
|
||||
}
|
||||
|
||||
nxt_unit_split_host(host_start, host_length, &host_start, &host_length,
|
||||
&port_start, &port_length);
|
||||
|
||||
RC(nxt_python_add_str(ctx, "SERVER_NAME", host_start, host_length));
|
||||
RC(nxt_python_add_str(ctx, "SERVER_PORT", port_start, port_length));
|
||||
|
||||
#undef RC
|
||||
|
||||
return environ;
|
||||
@@ -818,7 +805,7 @@ nxt_python_add_sptr(nxt_python_run_ctx_t *ctx, const char *name,
|
||||
|
||||
static int
|
||||
nxt_python_add_str(nxt_python_run_ctx_t *ctx, const char *name,
|
||||
char *str, uint32_t size)
|
||||
const char *str, uint32_t size)
|
||||
{
|
||||
PyObject *value;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user