t* gopherproxy-c customized
       
   URI git clone git://git.codevoid.de/gopherproxy-c-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 63d1799106c7f186d008b3085f1d6059c99b2681
   DIR parent 2922b5f38556aacf5dd1c6928b34be60a07cec7b
   URI Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Fri, 17 Aug 2018 15:58:26 +0200
       
       README: update and document workaround for a bug with nginx 1.12
       
       Diffstat:
         M README                              |      60 +++++++++++++++++++++++++++++--
       
       1 file changed, 57 insertions(+), 3 deletions(-)
       ---
   DIR diff --git a/README b/README
       t@@ -1,17 +1,71 @@
        gopherproxy
        ===========
        
       -Build dependencies:
       +Build dependencies
       +------------------
       +
        - C compiler.
        - libc + some BSD extensions (dprintf).
        - POSIX system.
        - make (optional).
        
        
       -Features:
       +Features
       +--------
       +
        - Works in older browsers such as links, lynx, w3m, dillo, etc.
        - No Javascript or CSS required.
        
        
       -Cons:
       +Cons
       +----
       +
        - Not all gopher types are supported.
       +
       +
       +Notes
       +-----
       +
       +When using nginx 1.12+ with OpenBSD slowcgi there may be buffering issues. This
       +is a bug in nginx. This bug is fixed in newer nginx versions (see patch below).
       +
       +Workaround:
       +        # workaround fastcgi buffering bug in nginx (fixed in 1.14).
       +        fastcgi_buffering off;
       +
       +Patch:
       +
       +commit cfc8c28259b3fd59f2517ac4830a08e8a9925148
       +Author: Maxim Dounin <mdounin@mdounin.ru>
       +Date:   Thu Nov 9 15:35:20 2017 +0300
       +
       +    FastCGI: adjust buffer position when parsing incomplete records.
       +    
       +    Previously, nginx failed to move buffer position when parsing an incomplete
       +    record header, and due to this wasn't be able to continue parsing once
       +    remaining bytes of the record header were received.
       +    
       +    This can affect response header parsing, potentially generating spurious errors
       +    like "upstream sent unexpected FastCGI request id high byte: 1 while reading
       +    response header from upstream".  While this is very unlikely, since usually
       +    record headers are written in a single buffer, this still can happen in real
       +    life, for example, if a record header will be split across two TCP packets
       +    and the second packet will be delayed.
       +    
       +    This does not affect non-buffered response body proxying, due to "buf->pos =
       +    buf->last;" at the start of the ngx_http_fastcgi_non_buffered_filter()
       +    function.  Also this does not affect buffered response body proxying, as
       +    each input buffer is only passed to the filter once.
       +
       +diff --git a/src/http/modules/ngx_http_fastcgi_module.c b/src/http/modules/ngx_http_fastcgi_module.c
       +index ea16ecae..b4bb1d0a 100644
       +--- a/src/http/modules/ngx_http_fastcgi_module.c
       ++++ b/src/http/modules/ngx_http_fastcgi_module.c
       +@@ -2646,6 +2646,7 @@ ngx_http_fastcgi_process_record(ngx_http_request_t *r,
       +         }
       +     }
       + 
       ++    f->pos = p;
       +     f->state = state;
       + 
       +     return NGX_AGAIN;