From 7539b3a684d30e8b6d2429fc44dd400b66c03708 Mon Sep 17 00:00:00 2001 From: Lei Jitang Date: Tue, 17 Feb 2015 07:12:02 -0800 Subject: [PATCH] Fix docker run --expose with an invalid port does not error out Signed-off-by: Lei Jitang Upstream-commit: 57abf4afe9f0416666475690c63b1c4ed03dd888 Component: engine --- components/engine/runconfig/parse.go | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/components/engine/runconfig/parse.go b/components/engine/runconfig/parse.go index 1455cdce3d..9e64f54436 100644 --- a/components/engine/runconfig/parse.go +++ b/components/engine/runconfig/parse.go @@ -206,21 +206,15 @@ func Parse(cmd *flag.FlagSet, args []string) (*Config, *HostConfig, *flag.FlagSe return nil, nil, cmd, fmt.Errorf("Invalid port format for --expose: %s", e) } //support two formats for expose, original format /[] or /[] - if strings.Contains(e, "-") { - proto, port := nat.SplitProtoPort(e) - //parse the start and end port and create a sequence of ports to expose - start, end, err := parsers.ParsePortRange(port) - if err != nil { - return nil, nil, cmd, fmt.Errorf("Invalid range format for --expose: %s, error: %s", e, err) - } - for i := start; i <= end; i++ { - p := nat.NewPort(proto, strconv.FormatUint(i, 10)) - if _, exists := ports[p]; !exists { - ports[p] = struct{}{} - } - } - } else { - p := nat.NewPort(nat.SplitProtoPort(e)) + proto, port := nat.SplitProtoPort(e) + //parse the start and end port and create a sequence of ports to expose + //if expose a port, the start and end port are the same + start, end, err := parsers.ParsePortRange(port) + if err != nil { + return nil, nil, cmd, fmt.Errorf("Invalid range format for --expose: %s, error: %s", e, err) + } + for i := start; i <= end; i++ { + p := nat.NewPort(proto, strconv.FormatUint(i, 10)) if _, exists := ports[p]; !exists { ports[p] = struct{}{} }