Commit b7fd1f4e authored by Abiola Ibrahim's avatar Abiola Ibrahim

FastCGI: separate standard and error output responses.

parent aba0ae35
...@@ -115,7 +115,12 @@ func (h Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) ...@@ -115,7 +115,12 @@ func (h Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error)
return http.StatusBadGateway, err return http.StatusBadGateway, err
} }
return 0, nil // FastCGI stderr outputs
if fcgi.stderr.Len() != 0 {
err = LogError(fcgi.stderr.String())
}
return 0, err
} }
} }
...@@ -281,3 +286,11 @@ var ( ...@@ -281,3 +286,11 @@ var (
// ErrIndexMissingSplit describes an index configuration error. // ErrIndexMissingSplit describes an index configuration error.
ErrIndexMissingSplit = errors.New("configured index file(s) must include split value") ErrIndexMissingSplit = errors.New("configured index file(s) must include split value")
) )
// LogError is a non fatal error that allows requests to go through.
type LogError string
// Error satisfies error interface.
func (l LogError) Error() string {
return string(l)
}
...@@ -164,6 +164,7 @@ type FCGIClient struct { ...@@ -164,6 +164,7 @@ type FCGIClient struct {
rwc io.ReadWriteCloser rwc io.ReadWriteCloser
h header h header
buf bytes.Buffer buf bytes.Buffer
stderr bytes.Buffer
keepAlive bool keepAlive bool
reqID uint16 reqID uint16
} }
...@@ -346,10 +347,22 @@ func (w *streamReader) Read(p []byte) (n int, err error) { ...@@ -346,10 +347,22 @@ func (w *streamReader) Read(p []byte) (n int, err error) {
if len(p) > 0 { if len(p) > 0 {
if len(w.buf) == 0 { if len(w.buf) == 0 {
rec := &record{}
w.buf, err = rec.read(w.c.rwc) // filter outputs for error log
if err != nil { for {
return rec := &record{}
var buf []byte
buf, err = rec.read(w.c.rwc)
if err != nil {
return
}
// standard error output
if rec.h.Type == Stderr {
w.c.stderr.Write(buf)
continue
}
w.buf = buf
break
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment