[PATCH v7 00/14] Static: Implement new "index" option

Alejandro Colomar alx.manpages at gmail.com
Tue Feb 15 15:25:10 UTC 2022


Some pytests are failing (both existing ones and new ones), but
the existing ones I don't understand them very well, and the new
ones may be incorrect, since the manual tests I performed work
correctly, AFAICT.  See patch 07/14 to see which existing tests
are failing and why.


Changes:

v2:
- Add support for variables in "index"
- Don't move share_idx, since that caused unnecessary padding.
- Use <stdbool.h>

v3 <https://mailman.nginx.org/pipermail/unit/2021-December/000304.html>:
- Don't use <stdbool.h> (as previously discussed).
- Add a .gitignore:
  While doing this work, I had quite some accidents.  This
  prevented them from happening again.  I based it on the
  .gitignore of the Linux man-pages
  <https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/.gitignore>
  <https://lore.kernel.org/linux-man/20210509213930.94120-35-alx.manpages@gmail.com/>.
- Treat non-arrays as arrays of size 1
  (as discussed earlier today:
  <https://mailman.nginx.org/pipermail/unit/2021-December/000300.html>).
- Simplify all of the code that can be simplified thanks to the
  change mentioned above (arrays of size 1).
- Fix the indentation of some random lines that I found to have an
  incorrect indentation.
- Reduce branching (especially 'else's), to improve readability.
  I didn't merge this change into the patch that adds the feature
  because there it adds too much complexity for nothing, and the
  patches read better separately.  However, I patched it previous
  to the third step to simplify that patch too, so this change
  sits on a patch of its own better, I think.
- Use const for a read-only parameter of a function.  I didn't
  change other functions (not even in the same file), since that
  would mean a huuuge diff, and for consistency we would need to
  do it everywhere.  So I only did it where I *needed* it to
  compile, for now.

v4 <https://mailman.nginx.org/pipermail/unit/2021-December/000327.html>:
- Actually iterate.

v5 <https://mailman.nginx.org/pipermail/unit/2021-December/000346.html>:
- Remove spurious 'else' [Valentin]

v6:
- Add Andrei's tests (and remove my changes to the existing tests).
- Fix bugs reported by Andrei:
  - Reject [].
  - Don't return 301 for a directory (maybe I should add a check
    that the string can't be empty; do we want that?)
  - Fix non-compiling debug code.

v7:
- Remove all of my changes to <tests/>.


Alejandro Colomar (13):
  .gitignore: ignore new files
  nxt_conf.c: Treat non-arrays as arrays of size 1
  Remove special cases for non-NXT_CONF_VALUE_ARRAY
  Fix indentation
  nxt_http_static_ctx_t: rename field 'index' to 'share_idx'
  Static: return 404 when "index" is a non-regular file
  Static: add "index" option
  nxt_http_static_iterate(): generalize code
  Static: variables in the "index" option
  nxt_conf_set_string_dup(): Use 'const' for read-only parameter
  nxt_http_static_init(): Simplify branching
  Static: multiple paths in the "index" option
  Static: optimize "index" iteration

Andrei Zeliankou (1):
  Tests: added tests for "index" option.

 .gitignore                |   2 +
 docs/changes.xml          |  18 +++++
 src/nxt_conf.c            |   7 +-
 src/nxt_conf.h            |   2 +-
 src/nxt_conf_validation.c |  55 +++++++++++++++-
 src/nxt_gnutls.c          |   4 +-
 src/nxt_http.h            |  15 +++--
 src/nxt_http_route.c      |  54 +++------------
 src/nxt_http_static.c     | 134 +++++++++++++++++++++++++-------------
 src/nxt_main_process.c    |   2 +-
 src/nxt_openssl.c         |  24 ++-----
 src/nxt_router.c          |  23 ++-----
 src/nxt_time_parse.c      |   6 +-
 src/nxt_unit.c            |   4 +-
 src/nxt_work_queue.h      |   4 +-
 src/perl/nxt_perl_psgi.c  |   2 +-
 src/python/nxt_python.c   |   9 ---
 test/test_static.py       |  47 +++++++++++++
 18 files changed, 255 insertions(+), 157 deletions(-)
 create mode 100644 .gitignore

-- 
2.34.1



More information about the unit mailing list