1. 10 Aug, 2021 1 commit
  2. 09 Aug, 2021 3 commits
    • Dridi Boukelmoune's avatar
      waiter: Adjust assertion based on usage · a33ea401
      Dridi Boukelmoune authored
      This looks like a copy-pasta or autocomplete mistake.
      a33ea401
    • Pål Hermunn Johansen's avatar
      Increase vsl_buffer and workspaces · 88698015
      Pål Hermunn Johansen authored
      On many busy production systems, the VSL buffer for transactions often
      fills up, triggering a flush to the VSM. If such a transaction takes a
      long time, it can happen that the flushed data is overwritten before
      the whole transaction completes. The result is that these transactions
      are missed by varnishncsa and other tools. Increasing the vsl_buffer
      does the trick, at some cost in workspace usage.
      
      The cost implies that one should increase the workspaces, too. Since
      the old defaults of 64k each are too low for many common use cases
      today, it is natural to increse everything in one patch.
      
      Some test cases have been updated. These are all cases where the
      workspaces have been set very low, and to make sure we are still
      testing the same regression, the vsl_buffer has been set to the old
      default instead of increasing the workspace.
      88698015
    • Dridi Boukelmoune's avatar
      vrt: Missing assertion · 1e190348
      Dridi Boukelmoune authored
      Spotted by flexelint.
      1e190348
  3. 06 Aug, 2021 4 commits
  4. 04 Aug, 2021 2 commits
  5. 03 Aug, 2021 10 commits
  6. 02 Aug, 2021 2 commits
    • Nils Goroll's avatar
      VRE: bounds check back references in VRE_sub() · 3fdce6cf
      Nils Goroll authored
      Before 6014912e, VRE_sub() used an
      ovector of size 30, which always containted sufficient space to store
      the 10 possible back- references \0 thorugh \9.
      
      Now that we use pcre2_match_data_create_from_pattern() and later
      pcre2_get_ovector_pointer(), we only get space for the number of
      substrings in the pattern, see pcre2api(3):
      
      	The ovector is created to be exactly the right size to hold
      	all the substrings a pattern might capture.
      
      Consequently, we need to check that back references do not exceed the
      maximum ovector.
      3fdce6cf
    • Poul-Henning Kamp's avatar
      069b78a4
  7. 19 Jul, 2021 5 commits
  8. 15 Jul, 2021 1 commit
  9. 13 Jul, 2021 4 commits
  10. 07 Jul, 2021 2 commits
  11. 06 Jul, 2021 3 commits
    • Dridi Boukelmoune's avatar
      vre: Migrate to pcre2 · 6014912e
      Dridi Boukelmoune authored
      Now that VRE is the only regular expression API we use, we can migrate
      its backend to pcre2. The existing 'pcre_*' parameters are also renamed
      to reflect this migration, and 'pcre_match_limit_recursion' gets special
      treatment and is renamed to pcre2_depth_limit.
      
      This creates an additional API breakage in VRE: the `match_recursion`
      field in `struct vre_limits` is also renamed. One last breakage is the
      removal of `VRE_has_jit` used by only one undocumented varnishtest
      feature, and the pcre_jit feature is only used by one test case that no
      longer fails.
      
      The pcre jit compilation feature was broken anyway: sealing it at
      compile time will not reflect what VRE actually links to. Once we have
      a test case needing the jit feature, we can introduce a better API for
      that check.
      
      There is one outstanding performance problem, the ovector that was
      previously allocated on the stack now needs to be allocated from the
      heap. It might be possible to implement a pcre2 context to fix that or
      maybe pool them, but for now we have heap allocations on the critical
      path. The VRE_sub() function makes sure to make a single ovector
      allocation (technically a pcre2_match_data allocation) since it's the
      only one guaranteed to loop on a single regular expression for the
      `regsuball()` use case.
      
      On the documentation front, the SmartOS installation instructions are
      hidden for lack of a pcre2 package.
      
      Closes #3616
      Closes #3559
      6014912e
    • Dridi Boukelmoune's avatar
      Revert "circleci: Disable developer warnings for alpine" · e34dbe1c
      Dridi Boukelmoune authored
      This reverts commit f254fff7.
      
      Conflicts:
      	.circleci/config.yml
      e34dbe1c
    • Dridi Boukelmoune's avatar
      build: Don't warn on system headers · f633c8e5
      Dridi Boukelmoune authored
      Since we turn warnings into errors, that means failing the build because
      something we have no control over in /usr/include does not have a strict
      prototype or some other shenanigan.
      
      Just in case it might be added by Wall or Wextra in a future clang or
      GCC release, we may disable it explicitly too.
      
      Refs #3565
      f633c8e5
  12. 05 Jul, 2021 3 commits
    • Dridi Boukelmoune's avatar
      ban: Migrate to VRE · 9219b0dc
      Dridi Boukelmoune authored
      Bans using regular expressions will consume slightly more space, but
      more importantly that breaks persistence binary compatibility. That's
      not a concern because we are both planning for a major release where
      that kind of breakage is acceptable, and in the context of a pcre2
      migration we would also break ban persistence.
      
      And now, VRE is the sole pcre consumer.
      9219b0dc
    • Dridi Boukelmoune's avatar
      vre: New VRE_export() function · a635df72
      Dridi Boukelmoune authored
      It packs a vre_t and a pcre in a single allocation that can be used by
      both VRE_match() and VRE_sub().
      a635df72
    • Dridi Boukelmoune's avatar
      vre: Add a jit argument to VRE_compile() · 8cdba637
      Dridi Boukelmoune authored
      We always use it internally except:
      
      - where the pcre2_jit_compilation parameter applies
      - when libvcc verifies that a regular expression compiles
      
      For the latter, the verification would attempt a jit compilation as well
      until now, but we no longer need to waste cycles on that.
      8cdba637