mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-10-31 10:37:24 -04: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)
 | |
| 		}
 | |
| 	}
 | |
| }
 |