1. 06 Apr, 2015 1 commit
    • Tatsuhiro Tsujikawa's avatar
      nghttpx: Fix bug that data buffered in SSL object are not read · d42f31ca
      Tatsuhiro Tsujikawa authored
      This is same issue described in https://github.com/h2o/h2o/issues/268.
      That is if SSL object has decrypted data buffered inside it, and
      application does not read it for some reason (e.g., rate limit), we
      have to check the existence of data using SSL_pending.  This is
      because buffered data inside SSL is not notified by io watcher.  It is
      obvious, but we totally missed it.
      
      nghttpx code normally reads everything until SSL_read returns error
      (want-read).  But if rate limit is involved, we stop reading early.
      Also in HTTP/1 code, while processing one request, we just read until
      buffer is filled up.  In these cases, we may suffer from this problem.
      
      This commit fixes this problem, by performing SSL_pending() and if it
      has buffered data and read io watcher is enabled, we feed event using
      ev_feed_event().
      d42f31ca
  2. 05 Apr, 2015 2 commits
  3. 04 Apr, 2015 1 commit
    • Tatsuhiro Tsujikawa's avatar
      Add nghttp2_send_data_callback to send DATA payload without copying · 9eff511c
      Tatsuhiro Tsujikawa authored
      To avoid buffer copy in nghttp2_data_source_read_callback, this commit
      introduces NGHTTP2_DATA_FLAG_NO_COPY and nghttp2_send_data_callback.
      By using NGHTTP2_DATA_FLAG_NO_COPY in
      nghttp2_data_source_read_callback, application can avoid to copy
      application data to given buffer.  Instead, application has to
      implement nghttp2_send_data_callback to send complete DATA frame by
      itself.  We see noticeable performance increase in nghttpd and
      tiny-nghttpd using this new feature.  On the other hand, nghttpx does
      not show such difference, probably because buffer copy is not
      bottleneck.  Using nghttp2_send_data_callback adds complexity, so it
      is recommended to measure the performance to see whether this extra
      complexity worth it.
      9eff511c
  4. 03 Apr, 2015 7 commits
  5. 01 Apr, 2015 7 commits
  6. 31 Mar, 2015 13 commits
  7. 30 Mar, 2015 7 commits
  8. 29 Mar, 2015 2 commits