History log of /unit/ (Results 226 – 250 of 2717)
Revision (<<< Hide revision tags) (Show revision tags >>>)Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
2491:aae60837ac2014-Jun-2023 Andrei Zeliankou

Tests: get rid of classes in test files.

Class usage came from the unittest framework and it was always redundant
after migration to the pytest. This commit removes classes from files
containing te

Tests: get rid of classes in test files.

Class usage came from the unittest framework and it was always redundant
after migration to the pytest. This commit removes classes from files
containing tests to make them more readable and understandable.

show more ...


test/conftest.py
test/test_access_log.py
test/test_asgi_application.py
test/test_asgi_application_unix_abstract.py
test/test_asgi_lifespan.py
test/test_asgi_targets.py
test/test_asgi_websockets.py
test/test_client_ip.py
test/test_configuration.py
test/test_forwarded_header.py
test/test_go_application.py
test/test_go_isolation.py
test/test_go_isolation_rootfs.py
test/test_http_header.py
test/test_java_application.py
test/test_java_isolation_rootfs.py
test/test_java_websockets.py
test/test_njs.py
test/test_njs_modules.py
test/test_node_application.py
test/test_node_es_modules.py
test/test_node_websockets.py
test/test_perl_application.py
test/test_php_application.py
test/test_php_basic.py
test/test_php_isolation.py
test/test_php_targets.py
test/test_proxy.py
test/test_proxy_chunked.py
test/test_python_application.py
test/test_python_basic.py
test/test_python_environment.py
test/test_python_isolation.py
test/test_python_isolation_chroot.py
test/test_python_procman.py
test/test_python_targets.py
test/test_reconfigure.py
test/test_reconfigure_tls.py
test/test_respawn.py
test/test_return.py
test/test_rewrite.py
test/test_routing.py
test/test_routing_tls.py
test/test_ruby_application.py
test/test_ruby_hooks.py
test/test_ruby_isolation.py
test/test_settings.py
test/test_static.py
test/test_static_chroot.py
test/test_static_fallback.py
test/test_static_mount.py
test/test_static_share.py
test/test_static_symlink.py
test/test_static_types.py
test/test_static_variables.py
test/test_status.py
test/test_status_tls.py
test/test_tls.py
test/test_tls_conf_command.py
test/test_tls_session.py
test/test_tls_sni.py
test/test_tls_tickets.py
test/test_unix_abstract.py
test/test_upstreams_rr.py
test/test_usr1.py
test/test_variables.py
test/unit/applications/lang/go.py
test/unit/applications/lang/java.py
test/unit/applications/lang/node.py
test/unit/applications/lang/perl.py
test/unit/applications/lang/php.py
test/unit/applications/lang/python.py
test/unit/applications/lang/ruby.py
test/unit/applications/proto.py
test/unit/applications/tls.py
test/unit/applications/websockets.py
test/unit/check/chroot.py
test/unit/check/go.py
test/unit/check/isolation.py
test/unit/check/unix_abstract.py
test/unit/control.py
test/unit/http.py
test/unit/option.py
test/unit/status.py
2490:45db3fe6825912-Jun-2023 Andrei Zeliankou

Tests: removed alert skip, unnecessary after 1a48ea61fec8.

2489:b37326158d1024-May-2023 Zhidao HONG

HTTP: fixed variable caching.

When a variable is accessed in the Unit configuration, the value is cached.
This was useful prior to the URI rewrite feature, but now that the URI (more
precisely, the

HTTP: fixed variable caching.

When a variable is accessed in the Unit configuration, the value is cached.
This was useful prior to the URI rewrite feature, but now that the URI (more
precisely, the request target) can be rewritten, the contents of the variable
$uri (which contains the path part of the request target, and is decoded)
should not be cached anymore, or at least the cached value should be invalidated
after a URI rewrite.

Example:

{
"rewrite": "/prefix$uri",
"share": "$uri"
}

For a request line like GET /foo?bar=baz HTTP/1.1\r\n, the expected file
served in the response would be /prefix/foo, but due to the caching issue,
Unit currently serves /foo.

show more ...

2488:55440e02a87312-Jun-2023 Andrei Zeliankou

Tests: prerequisites checking reworked.

Prerequisites check moved to the module level to simplify class structure.
Discovery and prerequisites checks functions moved to the separate files.
Introduce

Tests: prerequisites checking reworked.

Prerequisites check moved to the module level to simplify class structure.
Discovery and prerequisites checks functions moved to the separate files.
Introduced "require" fixture to provide per-test requirements check.

show more ...


test/conftest.py
test/test_access_log.py
test/test_asgi_application.py
test/test_asgi_application_unix_abstract.py
test/test_asgi_lifespan.py
test/test_asgi_targets.py
test/test_asgi_websockets.py
test/test_client_ip.py
test/test_configuration.py
test/test_forwarded_header.py
test/test_go_application.py
test/test_go_isolation.py
test/test_go_isolation_rootfs.py
test/test_http_header.py
test/test_java_application.py
test/test_java_isolation_rootfs.py
test/test_java_websockets.py
test/test_njs.py
test/test_njs_modules.py
test/test_node_application.py
test/test_node_es_modules.py
test/test_node_websockets.py
test/test_perl_application.py
test/test_php_application.py
test/test_php_basic.py
test/test_php_isolation.py
test/test_php_targets.py
test/test_proxy.py
test/test_proxy_chunked.py
test/test_python_application.py
test/test_python_basic.py
test/test_python_environment.py
test/test_python_isolation.py
test/test_python_isolation_chroot.py
test/test_python_procman.py
test/test_python_targets.py
test/test_reconfigure.py
test/test_reconfigure_tls.py
test/test_respawn.py
test/test_return.py
test/test_rewrite.py
test/test_routing.py
test/test_routing_tls.py
test/test_ruby_application.py
test/test_ruby_hooks.py
test/test_ruby_isolation.py
test/test_settings.py
test/test_static.py
test/test_static_chroot.py
test/test_static_fallback.py
test/test_static_mount.py
test/test_static_share.py
test/test_static_symlink.py
test/test_static_types.py
test/test_static_variables.py
test/test_status.py
test/test_status_tls.py
test/test_tls.py
test/test_tls_conf_command.py
test/test_tls_session.py
test/test_tls_sni.py
test/test_tls_tickets.py
test/test_unix_abstract.py
test/test_upstreams_rr.py
test/test_usr1.py
test/test_variables.py
test/unit/applications/proto.py
test/unit/check/check_prerequisites.py
test/unit/check/chroot.py
test/unit/check/discover_available.py
test/unit/check/go.py
test/unit/check/isolation.py
test/unit/check/njs.py
test/unit/check/node.py
test/unit/check/regex.py
test/unit/check/tls.py
test/unit/check/unix_abstract.py
test/unit/log.py
test/unit/option.py
2487:7fb8b559a68708-Jun-2023 Konstantin Pavlov

Packages: added Debian 12 "bookworm" support.

2486:20ae6fa1abd207-Jun-2023 Liam Crilly

Tools: unitc edit mode for interactive configuration.

2485:c46e36e1aa2b01-Jun-2023 Liam Crilly

Tools: improved ps(1) portability for unitc.

Improved cross-platform support by trying multiple ps(1) invocations to
obtain the unitd command line parameters. Additional error checking
detects when

Tools: improved ps(1) portability for unitc.

Improved cross-platform support by trying multiple ps(1) invocations to
obtain the unitd command line parameters. Additional error checking
detects when this process fails.

The first attempt uses `ps -wwo args=COMMAND -p` which has very broad
support and has the additional benefit of simplifying the output for
more reliable parsing of the process info. If that fails then we fall
back to simply `ps`.

The parsing of the process info has also changed. Instead of converting
'[]' into spaces we now convert them into explicit delimiters (using '^').
This is more reliable as it marks the beginning and the end of the info
we care about. Any trailing process information is now ignored (FreeBSD).

Additional error handling improves the robustness when starting unitd with
a different filename or from a relative path. In this case the control
socket and log file detection will fail when running `unitd --help`.
Additional error checking and messages are displayed when the control socket
cannot be determined. A single warning is shown when the log file cannot be
determined.

show more ...

2484:2df6640b0a6027-May-2023 synodriver

Python: Fix error checks in nxt_py_asgi_request_handler().

Signed-off-by: synodriver <diguohuangjiajinweijun@gmail.com>
Reviewed-by: Andrew Clayton <a.clayton@nginx.com>
[ Re-word commit subject - A

Python: Fix error checks in nxt_py_asgi_request_handler().

Signed-off-by: synodriver <diguohuangjiajinweijun@gmail.com>
Reviewed-by: Andrew Clayton <a.clayton@nginx.com>
[ Re-word commit subject - Andrew ]
Fixes: c4c2f90c5b53 ("Python: ASGI server introduced.")
Closes: <https://github.com/nginx/unit/issues/895>
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>

show more ...

2483:9d1e9b09cc6f27-May-2023 synodriver

Python: Add ASGI lifespan state support.

Lifespan state is a special dict in asgi lifespan scope, which allow
applications to persist data from the lifespan cycle to request/response
handling. The s

Python: Add ASGI lifespan state support.

Lifespan state is a special dict in asgi lifespan scope, which allow
applications to persist data from the lifespan cycle to request/response
handling. The scope["state"] namespace provides a place to store these
sorts of things. The server will ensure that a shallow copy of the
namespace is passed into each subsequent request/response call into the
application.

Some frameworks are already taking advantage of this feature, for
example, starlette, and without this feature they wouldn't work
properly.

Signed-off-by: synodriver <diguohuangjiajinweijun@gmail.com>
Reviewed-by: Andrew Clayton <a.clayton@nginx.com>
[ Minor code tweaks to avoid lines > 80 chars, static a function and
re-work the PyMemberDef structure initialisation for Python <3.7
and -Wwrite-strings compatibility - Andrew ]
Tested-by: <https://github.com/synodriver>
Tested-by: <https://github.com/hawiliali>
Closes: <https://github.com/nginx/unit/issues/864>
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>

show more ...

2482:88df458ead6d29-May-2023 Andrei Zeliankou

Tests: more fixtures.

Common methods from applications/proto.py converted to the fixtures.
sysctl check moved to the specific file where it is using.
Some options moved to the constructor to have ea

Tests: more fixtures.

Common methods from applications/proto.py converted to the fixtures.
sysctl check moved to the specific file where it is using.
Some options moved to the constructor to have early access.

show more ...

2481:48bf16097eee29-May-2023 Andrei Zeliankou

Tests: Log reworked.

All log-related code moved to the log.py.

2480:63b9663e2f8f25-May-2023 Andrei Zeliankou

Tests: assertion related fixes.

2479:208ef4e1186a25-May-2023 Andrei Zeliankou

Tests: "temp_dir" fixture used were possible.

2478:c08289a08a7325-May-2023 Andrei Zeliankou

Tests: unified setup method usage.

To make fixtures accessible inside of setup methods in tests all these methods
are renamed to the "setup_method_fixture" and decorated by autouse flag.

Also all s

Tests: unified setup method usage.

To make fixtures accessible inside of setup methods in tests all these methods
are renamed to the "setup_method_fixture" and decorated by autouse flag.

Also all setup methods moved to the top of the files.

show more ...

2477:4633c7db7fb525-May-2023 Andrei Zeliankou

Tests: removed unused variables.

2476:cb8c2da2afd922-May-2023 Alejandro Colomar

Tests: fixed incorrect pointer assignment.

If we don't update the pointer before copying the request body, then we
get the behavior shown below. After this patch, "foo\n" is rightly
appended at the

Tests: fixed incorrect pointer assignment.

If we don't update the pointer before copying the request body, then we
get the behavior shown below. After this patch, "foo\n" is rightly
appended at the end of the response body.

Request:

"GET / HTTP/1.1\r\nHost: _\nContent-Length: 4\n\nfoo\n"

Response body:

"""
Hello world!
foo
est data:
Method: GET
Protocol: HTTP/1.1
Remote addr: 127.0.0.1
Local addr: 127.0.0.1
Target: /
Path: /
Fields:
Host: _
Content-Length: 4
Body:
"""

Fixes: 1bb22d1e922c ("Unit application library.")
Reviewed-by: Andrew Clayton <a.clayton@nginx.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>

show more ...

2475:b4f09ab4b9f624-May-2023 Andrei Zeliankou

Updated copyright notice.

2474:00f56c19efeb24-May-2023 Andrei Zeliankou

Version bump.

2473:743741e00a1620-May-2023 Alejandro Colomar

Using names in .mailmap.

In this case, Andrew always committed under the same name, so it's not
strictly necessary.

This is for consistency, so that it's clearer whose is an email address.
It also

Using names in .mailmap.

In this case, Andrew always committed under the same name, so it's not
strictly necessary.

This is for consistency, so that it's clearer whose is an email address.
It also makes it easier to sort the names alphabetically.

Reviewed-by: Andrew Clayton <a.clayton@nginx.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>

show more ...

2472:3f68ff1c058a20-May-2023 Alejandro Colomar

Added Alex to .mailmap.

Reviewed-by: Andrew Clayton <a.clayton@nginx.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>

2471:4875957aa2e617-May-2023 Alejandro Colomar

Added back deprecated options to unitd.

We renamed the options recently, with the intention of keeping the old
names as supported but deprecated for some time, before removal. This
was done with th

Added back deprecated options to unitd.

We renamed the options recently, with the intention of keeping the old
names as supported but deprecated for some time, before removal. This
was done with the configure script options, but in the unitd binary, we
accidentally removed the old names, causing some unintended breakage.
Keep support for the old names, albeit with a deprecation message to
stderr, for some time, until we decide to remove them.

Fixes: 5a37171f733f ("Added default values for pathnames.")
Closes: <https://github.com/nginx/unit/issues/876>
Reported-by: El RIDO <elrido@gmx.net>
Acked-by: Liam Crilly <liam@nginx.com>
Acked-by: Artem Konev <a.konev@f5.com>
Acked-by: Timo Stark <t.stark@nginx.com>
Reviewed-by: Andrew Clayton <a.clayton@nginx.com>
Cc: Andrei Zeliankou <zelenkov@nginx.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>

show more ...

2470:607ae626288b19-May-2023 Andrei Zeliankou

Tests: added tests for "server_version" option.

2469:ac347ec3667d19-May-2023 Andrei Zeliankou

Tests: added ASGI application with IPv6 address test.

2468:e3ee46ddb76615-May-2023 Andrew Clayton

Python: Fix ASGI applications accessed over IPv6.

There are a couple of reports on GitHub about issues accessing Python
ASGI based applications over IPv6.

A request over IPv6 would result in an err

Python: Fix ASGI applications accessed over IPv6.

There are a couple of reports on GitHub about issues accessing Python
ASGI based applications over IPv6.

A request over IPv6 would result in an error like

2023/05/13 17:49:12 [alert] 47202#47202 [unit] #10: Python failed to create 'client' pair
2023/05/13 17:49:12 [alert] 47202#47202 [unit] Python failed to call 'loop.call_soon'
ValueError: invalid literal for int() with base 10: 'db8:1:1:1ee7:dead:beef:cafe'

The above error was the direct cause of the following exception:

Traceback (most recent call last):
File "/usr/lib64/python3.11/asyncio/base_events.py", line 765, in call_soon
handle = self._call_soon(callback, args, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.11/asyncio/base_events.py", line 781, in _call_soon
handle = events.Handle(callback, args, self, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SystemError: <class 'asyncio.events.Handle'> returned a result with an exception set

This issue occurred in the nxt_py_asgi_create_ip_address() function
where it tries to create an IP address / port number pair.

It does this by looking for the first ':' in the address and taking
everything after it as the port number. Like in the above error message,
if we tried to access the server @ 2001:db8:1:1:1ee7:dead:beef:cafe,
then we'd end up with the port number as 'db8:1:1:1ee7:dead:beef:cafe'.

There are two issues with this

1) The IP address and port number are already flowed through
separately.
2) Even if (1) wasn't true, it would still be broken for IPv6 as we'd
expect to a get an address literal like
[2001:db8:1:1:1ee7:dead:beef:cafe]:8080, however there was no code to
handle the []'s.

The fix is to simply not try looking for a port number. We pass a port
number into this function to use in the case where we don't find a port
number, we never will...

A further cleanup would be to flow through the server port number when
creating the 'server pair' PyTuple, rather than just using the hard
coded 80.

Closes: <https://github.com/nginx/unit/issues/793>
Closes: <https://github.com/nginx/unit/issues/874>
Reviewed-by: Alejandro Colomar <alx@nginx.com>
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>

show more ...

2467:28282eb943b910-May-2023 Artem Konev

Fixed broken links in README.

12345678910>>...109