| ... | ... |
@@ -46,7 +46,12 @@ func main() {
|
| 46 | 46 |
flHosts = flHosts[1:] //trick to display a nice default value in the usage |
| 47 | 47 |
} |
| 48 | 48 |
for i, flHost := range flHosts {
|
| 49 |
- flHosts[i] = utils.ParseHost(docker.DEFAULTHTTPHOST, docker.DEFAULTHTTPPORT, flHost) |
|
| 49 |
+ host, err := utils.ParseHost(docker.DEFAULTHTTPHOST, docker.DEFAULTHTTPPORT, flHost) |
|
| 50 |
+ if err == nil {
|
|
| 51 |
+ flHosts[i] = host |
|
| 52 |
+ } else {
|
|
| 53 |
+ log.Fatal(err) |
|
| 54 |
+ } |
|
| 50 | 55 |
} |
| 51 | 56 |
|
| 52 | 57 |
if *bridgeName != "" {
|
| ... | ... |
@@ -10,7 +10,6 @@ import ( |
| 10 | 10 |
"index/suffixarray" |
| 11 | 11 |
"io" |
| 12 | 12 |
"io/ioutil" |
| 13 |
- "log" |
|
| 14 | 13 |
"net/http" |
| 15 | 14 |
"os" |
| 16 | 15 |
"os/exec" |
| ... | ... |
@@ -818,17 +817,17 @@ func StripComments(input []byte, commentMarker []byte) []byte {
|
| 818 | 818 |
return output |
| 819 | 819 |
} |
| 820 | 820 |
|
| 821 |
-func ParseHost(host string, port int, addr string) string {
|
|
| 821 |
+func ParseHost(host string, port int, addr string) (string, error) {
|
|
| 822 | 822 |
var proto string |
| 823 | 823 |
switch {
|
| 824 | 824 |
case strings.HasPrefix(addr, "unix://"): |
| 825 |
- return addr |
|
| 825 |
+ return addr, nil |
|
| 826 | 826 |
case strings.HasPrefix(addr, "tcp://"): |
| 827 | 827 |
proto = "tcp" |
| 828 | 828 |
addr = strings.TrimPrefix(addr, "tcp://") |
| 829 | 829 |
default: |
| 830 | 830 |
if strings.Contains(addr, "://") {
|
| 831 |
- log.Fatal("Invalid bind address proto")
|
|
| 831 |
+ return "", fmt.Errorf("Invalid bind address protocol: %s", addr)
|
|
| 832 | 832 |
} |
| 833 | 833 |
proto = "tcp" |
| 834 | 834 |
} |
| ... | ... |
@@ -836,7 +835,7 @@ func ParseHost(host string, port int, addr string) string {
|
| 836 | 836 |
if strings.Contains(addr, ":") {
|
| 837 | 837 |
hostParts := strings.Split(addr, ":") |
| 838 | 838 |
if len(hostParts) != 2 {
|
| 839 |
- log.Fatal("Invalid bind address format.")
|
|
| 839 |
+ return "", fmt.Errorf("Invalid bind address format: %s", addr)
|
|
| 840 | 840 |
} |
| 841 | 841 |
if hostParts[0] != "" {
|
| 842 | 842 |
host = hostParts[0] |
| ... | ... |
@@ -847,7 +846,7 @@ func ParseHost(host string, port int, addr string) string {
|
| 847 | 847 |
} else {
|
| 848 | 848 |
host = addr |
| 849 | 849 |
} |
| 850 |
- return fmt.Sprintf("%s://%s:%d", proto, host, port)
|
|
| 850 |
+ return fmt.Sprintf("%s://%s:%d", proto, host, port), nil
|
|
| 851 | 851 |
} |
| 852 | 852 |
|
| 853 | 853 |
func GetReleaseVersion() string {
|
| ... | ... |
@@ -266,21 +266,24 @@ func TestHumanSize(t *testing.T) {
|
| 266 | 266 |
} |
| 267 | 267 |
|
| 268 | 268 |
func TestParseHost(t *testing.T) {
|
| 269 |
- if addr := ParseHost("127.0.0.1", 4243, "0.0.0.0"); addr != "tcp://0.0.0.0:4243" {
|
|
| 269 |
+ if addr, err := ParseHost("127.0.0.1", 4243, "0.0.0.0"); err != nil || addr != "tcp://0.0.0.0:4243" {
|
|
| 270 | 270 |
t.Errorf("0.0.0.0 -> expected tcp://0.0.0.0:4243, got %s", addr)
|
| 271 | 271 |
} |
| 272 |
- if addr := ParseHost("127.0.0.1", 4243, "0.0.0.1:5555"); addr != "tcp://0.0.0.1:5555" {
|
|
| 272 |
+ if addr, err := ParseHost("127.0.0.1", 4243, "0.0.0.1:5555"); err != nil || addr != "tcp://0.0.0.1:5555" {
|
|
| 273 | 273 |
t.Errorf("0.0.0.1:5555 -> expected tcp://0.0.0.1:5555, got %s", addr)
|
| 274 | 274 |
} |
| 275 |
- if addr := ParseHost("127.0.0.1", 4243, ":6666"); addr != "tcp://127.0.0.1:6666" {
|
|
| 275 |
+ if addr, err := ParseHost("127.0.0.1", 4243, ":6666"); err != nil || addr != "tcp://127.0.0.1:6666" {
|
|
| 276 | 276 |
t.Errorf(":6666 -> expected tcp://127.0.0.1:6666, got %s", addr)
|
| 277 | 277 |
} |
| 278 |
- if addr := ParseHost("127.0.0.1", 4243, "tcp://:7777"); addr != "tcp://127.0.0.1:7777" {
|
|
| 278 |
+ if addr, err := ParseHost("127.0.0.1", 4243, "tcp://:7777"); err != nil || addr != "tcp://127.0.0.1:7777" {
|
|
| 279 | 279 |
t.Errorf("tcp://:7777 -> expected tcp://127.0.0.1:7777, got %s", addr)
|
| 280 | 280 |
} |
| 281 |
- if addr := ParseHost("127.0.0.1", 4243, "unix:///var/run/docker.sock"); addr != "unix:///var/run/docker.sock" {
|
|
| 281 |
+ if addr, err := ParseHost("127.0.0.1", 4243, "unix:///var/run/docker.sock"); err != nil || addr != "unix:///var/run/docker.sock" {
|
|
| 282 | 282 |
t.Errorf("unix:///var/run/docker.sock -> expected unix:///var/run/docker.sock, got %s", addr)
|
| 283 | 283 |
} |
| 284 |
+ if addr, err := ParseHost("127.0.0.1", 4243, "udp://127.0.0.1"); err == nil {
|
|
| 285 |
+ t.Errorf("udp protocol address expected error return, but err == nil. Got %s", addr)
|
|
| 286 |
+ } |
|
| 284 | 287 |
} |
| 285 | 288 |
|
| 286 | 289 |
func TestParseRepositoryTag(t *testing.T) {
|