1. 08 Oct, 2018 6 commits
  2. 06 Oct, 2018 1 commit
  3. 05 Oct, 2018 8 commits
    • Nils Goroll's avatar
      fix a minor oversight · 7717b4c8
      Nils Goroll authored
      I failed to consider the hypothetical case that there is only gethrtime()
      and no clock_gettime(CLOCK_MONOTONIC).
      7717b4c8
    • Nils Goroll's avatar
      gethrtime() is now slower than clock_gettime() on modern Solarisen · 32e518aa
      Nils Goroll authored
      Throw out the conventional wisdom and base the decision on a micro
      benchmark.
      
      clock_gettime() is now preferred if it is consistently at least
      double as fast as gethrtime(), which is the case on varnishdev-il,
      the SmartOS vtest machine.
      
      config.log gives details on the performance check, sample output
      below:
      
      configure:22703: ./conftest
      hrtime              45989530 check 16748699083977959327
      clock_gettime        4119385 check 16748701613138517215
      ...
      hrtime              48113108 check 16748749015170035860
      clock_gettime        4020802 check 16748751585081458308
      clock_gettime wins 10/10
      32e518aa
    • Dridi Boukelmoune's avatar
      Fix assertion for PUSH_PROMISE frames · 0742ab0f
      Dridi Boukelmoune authored
      r2 can be either null or not.
      
      Test case by @daghf
      
      Refs #2781
      0742ab0f
    • Dridi Boukelmoune's avatar
      Hardening of the h2_frame_f callbacks · aad13344
      Dridi Boukelmoune authored
      And by the way, they are known as h2_rxframe_f these days!
      
      Refs #2781
      aad13344
    • Carlo Cannas's avatar
      Allow PRIORITY frames on closed streams · ff9c9e2e
      Carlo Cannas authored
      Currently Varnish doesn't allow PRIORITY frames to be received on closed
      streams: it treats it as a protocol violation and replies with a GOAWAY.
      
      This is not spec compliant, rfc7540 states:
      
      The PRIORITY frame can be sent for a stream in the "idle" or "closed"
      state.
      rfc7540,l,1947,1948
      
      The PRIORITY frame can be sent on a stream in any state
      rfc7540,l,1938,1938
      
      https://tools.ietf.org/html/rfc7540#section-6.3
      
      This behaviour can be triggered by real-world browsers: Chrome 69 has been
      observed sending PRIORITY frames which are received by Varnish after a stream
      has been closed (and cleaned by h2_sweep). When that happens the connection is
      closed and Chrome aborts the loading of all the resources which started to
      load on that connection.
      
      This commit solves the issue by avoiding all the stream creation code and its
      checks to be performed when a PRIORITY frame is received.
      This moves all the stream creation logic inside h2_rx_headers, the only other
      frame which is allowed on idle streams.
      
      This also fixes the concurrent streams counter and highest_stream: they should
      be updated only when a stream enters the "open" state (or "reserved" if
      Varnish used served push) but currently a PRIORITY frame on an idle stream
      affects them.
      
      https://tools.ietf.org/html/rfc7540#section-5.1.1
      rfc7540,l,1153,1156
      rfc7540,l,1193,1198
      rfc7540,l,1530,1533
      
      Fixes: #2775
      ff9c9e2e
    • Carlo Cannas's avatar
      Move header block frame sequence check earlier · bc823a06
      Carlo Cannas authored
      This moves it before the new stream object creation, so we save ourselves an
      useless allocation and initialization of a stream object which would be never
      used and straight killed.
      
      This also simplifies upcoming commits.
      bc823a06
    • Carlo Cannas's avatar
      Don't use txprio to open streams in tests · 9dcb4f3f
      Carlo Cannas authored
      As per spec a client can only send a HEADERS frame to cause a stream to
      transition from the "idle" state to "open". A PRIORITY frame can be sent to an
      "idle" stream, but it will remain in that state.
      
      rfc7540,l,916,940
      https://tools.ietf.org/html/rfc7540#section-5.1
      
      To open a stream the command
      
      txreq -nostrend
      
      can be used. The -nostrend option will ensure that the stream won't transition
      to a "half-closed" state.
      9dcb4f3f
    • Nils Goroll's avatar
      trivial vtim printf benchmark · 222a1f59
      Nils Goroll authored
      222a1f59
  4. 04 Oct, 2018 4 commits
  5. 03 Oct, 2018 5 commits
  6. 01 Oct, 2018 1 commit
  7. 29 Sep, 2018 1 commit
  8. 28 Sep, 2018 1 commit
  9. 27 Sep, 2018 5 commits
  10. 26 Sep, 2018 8 commits