1. 05 Oct, 2018 4 commits
    • 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
  2. 04 Oct, 2018 4 commits
  3. 03 Oct, 2018 5 commits
  4. 01 Oct, 2018 1 commit
  5. 29 Sep, 2018 1 commit
  6. 28 Sep, 2018 1 commit
  7. 27 Sep, 2018 5 commits
  8. 26 Sep, 2018 8 commits
  9. 25 Sep, 2018 6 commits
  10. 24 Sep, 2018 5 commits