mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-04 03:27:23 -05:00 
			
		
		
		
	FastCGI: Explicitly set Content-Length #626
This commit is contained in:
		
							parent
							
								
									05957b4965
								
							
						
					
					
						commit
						ef5f9c771d
					
				
							
								
								
									
										11
									
								
								middleware/fastcgi/fastcgi.go
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										11
									
								
								middleware/fastcgi/fastcgi.go
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@ -4,6 +4,7 @@
 | 
			
		||||
package fastcgi
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"io"
 | 
			
		||||
	"net/http"
 | 
			
		||||
@ -105,13 +106,21 @@ func (h Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error)
 | 
			
		||||
				return http.StatusBadGateway, err
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Write the response body to a buffer
 | 
			
		||||
			// To explicitly set Content-Length
 | 
			
		||||
			// For FastCGI app that don't set it
 | 
			
		||||
			var buf bytes.Buffer
 | 
			
		||||
			io.Copy(&buf, resp.Body)
 | 
			
		||||
			if r.Header.Get("Content-Length") == "" {
 | 
			
		||||
				w.Header().Set("Content-Length", strconv.Itoa(buf.Len()))
 | 
			
		||||
			}
 | 
			
		||||
			writeHeader(w, resp)
 | 
			
		||||
 | 
			
		||||
			// Write the response body
 | 
			
		||||
			// TODO: If this has an error, the response will already be
 | 
			
		||||
			// partly written. We should copy out of resp.Body into a buffer
 | 
			
		||||
			// first, then write it to the response...
 | 
			
		||||
			_, err = io.Copy(w, resp.Body)
 | 
			
		||||
			_, err = io.Copy(w, &buf)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return http.StatusBadGateway, err
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user