From 14b64fef43381ee0e9719b3f5e4f14a115c19b0b Mon Sep 17 00:00:00 2001 From: Slawomir Jasinski Date: Thu, 11 Jun 2015 09:59:30 +1000 Subject: [PATCH] fix #127 fixes issue with Status header coming from php-fpm 5.5 different then regular "HTTP/1.1 200 OK". If server returns Status code - "200" will be handled properly instead "throwing runtime error: index out of range" --- middleware/fastcgi/fcgiclient.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/middleware/fastcgi/fcgiclient.go b/middleware/fastcgi/fcgiclient.go index 44b649e6..b2d6ee8e 100644 --- a/middleware/fastcgi/fcgiclient.go +++ b/middleware/fastcgi/fcgiclient.go @@ -375,12 +375,21 @@ func (c *FCGIClient) Request(p map[string]string, req io.Reader) (resp *http.Res resp.Header = http.Header(mimeHeader) if resp.Header.Get("Status") != "" { - statusParts := strings.SplitN(resp.Header.Get("Status"), " ", 2) - resp.StatusCode, err = strconv.Atoi(statusParts[0]) + + // check if Status is long enought to split + if strings.Count(resp.Header.Get("Status"), " ") > 0 { + statusParts := strings.SplitN(resp.Header.Get("Status"), " ", 2) + resp.StatusCode, err = strconv.Atoi(statusParts[0]) + resp.Status = statusParts[1] + resp.Status = statusParts[1] + } else { + resp.StatusCode, err = strconv.Atoi(resp.Header.Get("Status")) + } + if err != nil { return } - resp.Status = statusParts[1] + } else { resp.StatusCode = http.StatusOK }