Просмотр исходного кода

refactor utils.ParseHost with switch-case, so we can add other proto support easily

Yang Bai 11 лет назад
Родитель
Сommit
99f1675566
1 измененных файлов с 12 добавлено и 5 удалено
  1. 12 5
      utils/utils.go

+ 12 - 5
utils/utils.go

@@ -819,17 +819,24 @@ func StripComments(input []byte, commentMarker []byte) []byte {
 }
 }
 
 
 func ParseHost(host string, port int, addr string) string {
 func ParseHost(host string, port int, addr string) string {
-	if strings.HasPrefix(addr, "unix://") {
+	var proto string
+	switch {
+	case strings.HasPrefix(addr, "unix://"):
 		return addr
 		return addr
-	}
-	if strings.HasPrefix(addr, "tcp://") {
+	case strings.HasPrefix(addr, "tcp://"):
+		proto = "tcp"
 		addr = strings.TrimPrefix(addr, "tcp://")
 		addr = strings.TrimPrefix(addr, "tcp://")
+	default:
+		if strings.Contains(addr, "://") {
+			log.Fatal("Invalid bind address proto")
+		}
+		proto = "tcp"
 	}
 	}
+
 	if strings.Contains(addr, ":") {
 	if strings.Contains(addr, ":") {
 		hostParts := strings.Split(addr, ":")
 		hostParts := strings.Split(addr, ":")
 		if len(hostParts) != 2 {
 		if len(hostParts) != 2 {
 			log.Fatal("Invalid bind address format.")
 			log.Fatal("Invalid bind address format.")
-			os.Exit(-1)
 		}
 		}
 		if hostParts[0] != "" {
 		if hostParts[0] != "" {
 			host = hostParts[0]
 			host = hostParts[0]
@@ -840,7 +847,7 @@ func ParseHost(host string, port int, addr string) string {
 	} else {
 	} else {
 		host = addr
 		host = addr
 	}
 	}
-	return fmt.Sprintf("tcp://%s:%d", host, port)
+	return fmt.Sprintf("%s://%s:%d", proto, host, port)
 }
 }
 
 
 func GetReleaseVersion() string {
 func GetReleaseVersion() string {