Added SERVER_SOFTWARE request meta-variable.

This commit is contained in:
Valentin Bartenev
2018-05-21 16:14:24 +03:00
parent 8a156a9fc4
commit 3e8dbfe5ff
10 changed files with 37 additions and 4 deletions

View File

@@ -41,6 +41,9 @@ static uint32_t compat[] = {
};
nxt_str_t nxt_server = nxt_string(NXT_SERVER);
static nxt_thread_mutex_t nxt_app_mutex;
static nxt_thread_cond_t nxt_app_cond;

View File

@@ -307,6 +307,7 @@ nxt_app_msg_read_length(u_char *src, size_t *length)
nxt_app_lang_module_t *nxt_app_lang_module(nxt_runtime_t *rt, nxt_str_t *name);
nxt_app_type_t nxt_app_parse_type(u_char *p, size_t length);
NXT_EXPORT extern nxt_str_t nxt_server;
extern nxt_application_module_t nxt_go_module;

View File

@@ -1265,7 +1265,7 @@ nxt_controller_response(nxt_task_t *task, nxt_controller_request_t *req,
body->mem.free = nxt_cpymem(body->mem.free, "\r\n", 2);
size = sizeof("HTTP/1.1 " "\r\n") - 1 + status_line.length
+ sizeof("Server: Unit/" NXT_VERSION "\r\n") - 1
+ sizeof("Server: " NXT_SERVER "\r\n") - 1
+ sizeof("Date: Wed, 31 Dec 1986 16:40:00 GMT\r\n") - 1
+ sizeof("Content-Type: application/json\r\n") - 1
+ sizeof("Content-Length: " "\r\n") - 1 + NXT_SIZE_T_LEN
@@ -1287,7 +1287,7 @@ nxt_controller_response(nxt_task_t *task, nxt_controller_request_t *req,
status_line.length);
nxt_str_set(&str, "\r\n"
"Server: Unit/" NXT_VERSION "\r\n"
"Server: " NXT_SERVER "\r\n"
"Date: ");
b->mem.free = nxt_cpymem(b->mem.free, str.start, str.length);

View File

@@ -297,7 +297,7 @@ nxt_http_request_header_send(nxt_task_t *task, nxt_http_request_t *r)
goto fail;
}
nxt_http_field_set(server, "Server", "Unit/" NXT_VERSION);
nxt_http_field_set(server, "Server", NXT_SERVER);
if (r->resp.date == NULL) {
date = nxt_list_zero_add(r->resp.fields);

View File

@@ -14,6 +14,7 @@
#define NXT_VERSION "1.2"
#define NXT_VERNUM 10200
#define NXT_SERVER "Unit/" NXT_VERSION
typedef struct nxt_port_s nxt_port_t;
typedef struct nxt_task_s nxt_task_t;

View File

@@ -668,6 +668,8 @@ nxt_php_register_variables(zval *track_vars_array TSRMLS_DC)
php_register_variable_safe((char *) (n), (char *) (v).start, \
(v).length, track_vars_array TSRMLS_CC) \
NXT_PHP_SET("SERVER_SOFTWARE", nxt_server);
NXT_PHP_SET("SERVER_PROTOCOL", h->version);
/*

View File

@@ -541,6 +541,24 @@ nxt_python_create_environ(nxt_task_t *task)
return NULL;
}
obj = PyString_FromStringAndSize((char *) nxt_server.start,
nxt_server.length);
if (nxt_slow_path(obj == NULL)) {
nxt_alert(task,
"Python failed to create the \"SERVER_SOFTWARE\" environ value");
goto fail;
}
if (nxt_slow_path(PyDict_SetItemString(environ, "SERVER_SOFTWARE", obj)
!= 0))
{
nxt_alert(task,
"Python failed to set the \"SERVER_SOFTWARE\" environ value");
goto fail;
}
Py_DECREF(obj);
obj = Py_BuildValue("(ii)", 1, 0);
if (nxt_slow_path(obj == NULL)) {

View File

@@ -596,6 +596,9 @@ nxt_perl_psgi_env_create(PerlInterpreter *my_perl, nxt_task_t *task,
RC(nxt_perl_psgi_read_add_env(my_perl, task, rmsg, \
hash_env, ATTR, &str))
RC(nxt_perl_psgi_env_append_str(my_perl, hash_env,
"SERVER_SOFTWARE", &nxt_server));
GET_STR("REQUEST_METHOD");
GET_STR("REQUEST_URI");

View File

@@ -272,6 +272,11 @@ nxt_ruby_rack_env_create(VALUE arg)
VALUE hash_env, version;
hash_env = rb_hash_new();
rb_hash_aset(hash_env, rb_str_new2("SERVER_SOFTWARE"),
rb_str_new((const char *) nxt_server.start,
(long) nxt_server.length));
version = rb_ary_new();
rb_ary_push(version, UINT2NUM(NXT_RUBY_RACK_API_VERSION_MAJOR));