mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-04 10:12:29 +08:00 
			
		
		
		
	* caddyhttp: Make use of http.ResponseController
Also syncs the reverseproxy implementation with stdlib's which now uses ResponseController as well 2449bbb5e6
* Enable full-duplex for HTTP/1.1
* Appease linter
* Add warning for builds with Go 1.20, so it's less surprising to users
* Improved godoc for EnableFullDuplex, copied text from stdlib
* Only wrap in encode if not already wrapped
		
	
		
			
				
	
	
		
			35 lines
		
	
	
		
			639 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			639 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package reverseproxy
 | 
						|
 | 
						|
import (
 | 
						|
	"bytes"
 | 
						|
	"net/http/httptest"
 | 
						|
	"strings"
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
func TestHandlerCopyResponse(t *testing.T) {
 | 
						|
	h := Handler{}
 | 
						|
	testdata := []string{
 | 
						|
		"",
 | 
						|
		strings.Repeat("a", defaultBufferSize),
 | 
						|
		strings.Repeat("123456789 123456789 123456789 12", 3000),
 | 
						|
	}
 | 
						|
 | 
						|
	dst := bytes.NewBuffer(nil)
 | 
						|
	recorder := httptest.NewRecorder()
 | 
						|
	recorder.Body = dst
 | 
						|
 | 
						|
	for _, d := range testdata {
 | 
						|
		src := bytes.NewBuffer([]byte(d))
 | 
						|
		dst.Reset()
 | 
						|
		err := h.copyResponse(recorder, src, 0)
 | 
						|
		if err != nil {
 | 
						|
			t.Errorf("failed with error: %v", err)
 | 
						|
		}
 | 
						|
		out := dst.String()
 | 
						|
		if out != d {
 | 
						|
			t.Errorf("bad read: got %q", out)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |