mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-10-31 02:27:19 -04:00 
			
		
		
		
	Merge branch 'master' into fastcgi-timeout-defaults
This commit is contained in:
		
						commit
						32fa0ce6a0
					
				
							
								
								
									
										4
									
								
								caddy.go
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								caddy.go
									
									
									
									
									
								
							| @ -232,7 +232,7 @@ func HasListenerWithAddress(addr string) bool { | |||||||
| func listenerAddrEqual(ln net.Listener, addr string) bool { | func listenerAddrEqual(ln net.Listener, addr string) bool { | ||||||
| 	lnAddr := ln.Addr().String() | 	lnAddr := ln.Addr().String() | ||||||
| 	hostname, port, err := net.SplitHostPort(addr) | 	hostname, port, err := net.SplitHostPort(addr) | ||||||
| 	if err != nil || hostname != "" { | 	if err != nil { | ||||||
| 		return lnAddr == addr | 		return lnAddr == addr | ||||||
| 	} | 	} | ||||||
| 	if lnAddr == net.JoinHostPort("::", port) { | 	if lnAddr == net.JoinHostPort("::", port) { | ||||||
| @ -241,7 +241,7 @@ func listenerAddrEqual(ln net.Listener, addr string) bool { | |||||||
| 	if lnAddr == net.JoinHostPort("0.0.0.0", port) { | 	if lnAddr == net.JoinHostPort("0.0.0.0", port) { | ||||||
| 		return true | 		return true | ||||||
| 	} | 	} | ||||||
| 	return false | 	return hostname != "" && lnAddr == addr | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // TCPServer is a type that can listen and serve connections. | // TCPServer is a type that can listen and serve connections. | ||||||
|  | |||||||
| @ -1,6 +1,10 @@ | |||||||
| package caddy | package caddy | ||||||
| 
 | 
 | ||||||
| import "testing" | import ( | ||||||
|  | 	"net" | ||||||
|  | 	"strconv" | ||||||
|  | 	"testing" | ||||||
|  | ) | ||||||
| 
 | 
 | ||||||
| /* | /* | ||||||
| // TODO | // TODO | ||||||
| @ -56,3 +60,41 @@ func TestIsLoopback(t *testing.T) { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func TestListenerAddrEqual(t *testing.T) { | ||||||
|  | 	ln1, err := net.Listen("tcp", "[::]:0") | ||||||
|  | 	if err != nil { | ||||||
|  | 		t.Fatal(err) | ||||||
|  | 	} | ||||||
|  | 	defer ln1.Close() | ||||||
|  | 
 | ||||||
|  | 	ln1port := strconv.Itoa(ln1.Addr().(*net.TCPAddr).Port) | ||||||
|  | 
 | ||||||
|  | 	ln2, err := net.Listen("tcp", "127.0.0.1:0") | ||||||
|  | 	if err != nil { | ||||||
|  | 		t.Fatal(err) | ||||||
|  | 	} | ||||||
|  | 	defer ln2.Close() | ||||||
|  | 
 | ||||||
|  | 	ln2port := strconv.Itoa(ln2.Addr().(*net.TCPAddr).Port) | ||||||
|  | 
 | ||||||
|  | 	for i, test := range []struct { | ||||||
|  | 		ln     net.Listener | ||||||
|  | 		addr   string | ||||||
|  | 		expect bool | ||||||
|  | 	}{ | ||||||
|  | 		{ln1, ":1234", false}, | ||||||
|  | 		{ln1, "0.0.0.0:1234", false}, | ||||||
|  | 		{ln1, "0.0.0.0", false}, | ||||||
|  | 		{ln1, ":" + ln1port + "", true}, | ||||||
|  | 		{ln1, "0.0.0.0:" + ln1port + "", true}, | ||||||
|  | 		{ln2, ":" + ln2port + "", false}, | ||||||
|  | 		{ln2, "127.0.0.1:1234", false}, | ||||||
|  | 		{ln2, "127.0.0.1", false}, | ||||||
|  | 		{ln2, "127.0.0.1:" + ln2port + "", true}, | ||||||
|  | 	} { | ||||||
|  | 		if got, want := listenerAddrEqual(test.ln, test.addr), test.expect; got != want { | ||||||
|  | 			t.Errorf("Test %d (%s == %s): expected %v but was %v", i, test.addr, test.ln.Addr().String(), want, got) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | |||||||
| @ -746,14 +746,16 @@ func TestFiles(t *testing.T) { | |||||||
| 
 | 
 | ||||||
| 		// Create directory / files from test case. | 		// Create directory / files from test case. | ||||||
| 		if test.fileNames != nil { | 		if test.fileNames != nil { | ||||||
| 			dirPath, err = ioutil.TempDir(fmt.Sprintf("%s", context.Root), "caddy_test") | 			dirPath, err = ioutil.TempDir(fmt.Sprintf("%s", context.Root), "caddy_ctxtest") | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
|  | 				os.RemoveAll(dirPath) | ||||||
| 				t.Fatalf(testPrefix+"Expected no error creating directory, got: '%s'", err.Error()) | 				t.Fatalf(testPrefix+"Expected no error creating directory, got: '%s'", err.Error()) | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			for _, name := range test.fileNames { | 			for _, name := range test.fileNames { | ||||||
| 				absFilePath := filepath.Join(dirPath, name) | 				absFilePath := filepath.Join(dirPath, name) | ||||||
| 				if err = ioutil.WriteFile(absFilePath, []byte(""), os.ModePerm); err != nil { | 				if err = ioutil.WriteFile(absFilePath, []byte(""), os.ModePerm); err != nil { | ||||||
|  | 					os.RemoveAll(dirPath) | ||||||
| 					t.Fatalf(testPrefix+"Expected no error creating file, got: '%s'", err.Error()) | 					t.Fatalf(testPrefix+"Expected no error creating file, got: '%s'", err.Error()) | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
|  | |||||||
| @ -229,10 +229,11 @@ func TestUnixSocketProxy(t *testing.T) { | |||||||
| 	})) | 	})) | ||||||
| 
 | 
 | ||||||
| 	// Get absolute path for unix: socket | 	// Get absolute path for unix: socket | ||||||
| 	dir, err := ioutil.TempDir("", "caddy_test") | 	dir, err := ioutil.TempDir("", "caddy_proxytest") | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatalf("Failed to make temp dir to contain unix socket. %v", err) | 		t.Fatalf("Failed to make temp dir to contain unix socket. %v", err) | ||||||
| 	} | 	} | ||||||
|  | 	defer os.RemoveAll(dir) | ||||||
| 	socketPath := filepath.Join(dir, "test_socket") | 	socketPath := filepath.Join(dir, "test_socket") | ||||||
| 
 | 
 | ||||||
| 	// Change httptest.Server listener to listen to unix: socket | 	// Change httptest.Server listener to listen to unix: socket | ||||||
| @ -283,20 +284,21 @@ func GetHTTPProxy(messageFormat string, prefix string) (*Proxy, *httptest.Server | |||||||
| 	return newPrefixedWebSocketTestProxy(ts.URL, prefix), ts | 	return newPrefixedWebSocketTestProxy(ts.URL, prefix), ts | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func GetSocketProxy(messageFormat string, prefix string) (*Proxy, *httptest.Server, error) { | func GetSocketProxy(messageFormat string, prefix string) (*Proxy, *httptest.Server, string, error) { | ||||||
| 	ts := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { | 	ts := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { | ||||||
| 		fmt.Fprintf(w, messageFormat, r.URL.String()) | 		fmt.Fprintf(w, messageFormat, r.URL.String()) | ||||||
| 	})) | 	})) | ||||||
| 
 | 
 | ||||||
| 	dir, err := ioutil.TempDir("", "caddy_test") | 	dir, err := ioutil.TempDir("", "caddy_proxytest") | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, nil, fmt.Errorf("Failed to make temp dir to contain unix socket. %v", err) | 		return nil, nil, dir, fmt.Errorf("Failed to make temp dir to contain unix socket. %v", err) | ||||||
| 	} | 	} | ||||||
| 	socketPath := filepath.Join(dir, "test_socket") | 	socketPath := filepath.Join(dir, "test_socket") | ||||||
| 
 | 
 | ||||||
| 	ln, err := net.Listen("unix", socketPath) | 	ln, err := net.Listen("unix", socketPath) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, nil, fmt.Errorf("Unable to listen: %v", err) | 		os.RemoveAll(dir) | ||||||
|  | 		return nil, nil, dir, fmt.Errorf("Unable to listen: %v", err) | ||||||
| 	} | 	} | ||||||
| 	ts.Listener = ln | 	ts.Listener = ln | ||||||
| 
 | 
 | ||||||
| @ -304,7 +306,7 @@ func GetSocketProxy(messageFormat string, prefix string) (*Proxy, *httptest.Serv | |||||||
| 
 | 
 | ||||||
| 	tsURL := strings.Replace(ts.URL, "http://", "unix:", 1) | 	tsURL := strings.Replace(ts.URL, "http://", "unix:", 1) | ||||||
| 
 | 
 | ||||||
| 	return newPrefixedWebSocketTestProxy(tsURL, prefix), ts, nil | 	return newPrefixedWebSocketTestProxy(tsURL, prefix), ts, dir, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func GetTestServerMessage(p *Proxy, ts *httptest.Server, path string) (string, error) { | func GetTestServerMessage(p *Proxy, ts *httptest.Server, path string) (string, error) { | ||||||
| @ -370,8 +372,7 @@ func TestUnixSocketProxyPaths(t *testing.T) { | |||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	for _, test := range tests { | 	for _, test := range tests { | ||||||
| 		p, ts, err := GetSocketProxy(greeting, test.prefix) | 		p, ts, tmpdir, err := GetSocketProxy(greeting, test.prefix) | ||||||
| 
 |  | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			t.Fatalf("Getting socket proxy failed - %v", err) | 			t.Fatalf("Getting socket proxy failed - %v", err) | ||||||
| 		} | 		} | ||||||
| @ -379,12 +380,15 @@ func TestUnixSocketProxyPaths(t *testing.T) { | |||||||
| 		actualMsg, err := GetTestServerMessage(p, ts, test.url) | 		actualMsg, err := GetTestServerMessage(p, ts, test.url) | ||||||
| 
 | 
 | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
|  | 			os.RemoveAll(tmpdir) | ||||||
| 			t.Fatalf("Getting server message failed - %v", err) | 			t.Fatalf("Getting server message failed - %v", err) | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if actualMsg != test.expected { | 		if actualMsg != test.expected { | ||||||
| 			t.Errorf("Expected '%s' but got '%s' instead", test.expected, actualMsg) | 			t.Errorf("Expected '%s' but got '%s' instead", test.expected, actualMsg) | ||||||
| 		} | 		} | ||||||
|  | 
 | ||||||
|  | 		os.RemoveAll(tmpdir) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -166,12 +166,12 @@ func TestGetEmail(t *testing.T) { | |||||||
| 			t.Fatalf("Error saving user %d: %v", i, err) | 			t.Fatalf("Error saving user %d: %v", i, err) | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		// Change modified time so they're all different, so the test becomes deterministic | 		// Change modified time so they're all different and the test becomes more deterministic | ||||||
| 		f, err := os.Stat(testStorage.user(eml)) | 		f, err := os.Stat(testStorage.user(eml)) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			t.Fatalf("Could not access user folder for '%s': %v", eml, err) | 			t.Fatalf("Could not access user folder for '%s': %v", eml, err) | ||||||
| 		} | 		} | ||||||
| 		chTime := f.ModTime().Add(-(time.Duration(i) * time.Second)) | 		chTime := f.ModTime().Add(-(time.Duration(i) * time.Hour)) // 1 second isn't always enough space! | ||||||
| 		if err := os.Chtimes(testStorage.user(eml), chTime, chTime); err != nil { | 		if err := os.Chtimes(testStorage.user(eml), chTime, chTime); err != nil { | ||||||
| 			t.Fatalf("Could not change user folder mod time for '%s': %v", eml, err) | 			t.Fatalf("Could not change user folder mod time for '%s': %v", eml, err) | ||||||
| 		} | 		} | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user