diff options
Diffstat (limited to 'pkg/server/tunnel.go')
| -rw-r--r-- | pkg/server/tunnel.go | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/pkg/server/tunnel.go b/pkg/server/tunnel.go index ccd501e..afd35d8 100644 --- a/pkg/server/tunnel.go +++ b/pkg/server/tunnel.go @@ -373,6 +373,10 @@ func newTunnel(limit int, args []string, env env.Env) (*tunnel, error) { return nil, err } + if _, ok := in.(socket.Single); ok { + limit = 1 + } + if out, err = socket.New(args[n]); err != nil { in.Close() return nil, err @@ -406,12 +410,16 @@ func isOkTunnelName(s string) bool { } func tunnelAdd(r *request) { + limit := maxQueueLimit + args := r.args name := "" - limit := 1 for len(args) > 1 { - if args[0] == "name" { + noarg := false + + switch args[0] { + case "name": name = args[1] if !isOkTunnelName(name) { r.Fatal("bad name") @@ -422,25 +430,26 @@ func tunnelAdd(r *request) { } args = args[2:] - continue - } - if args[0] == "limit" { + case "limit": if n, _ := strconv.Atoi(args[1]); n > 0 && n < maxQueueLimit { limit = n } else { r.Fatal("bad limit") } args = args[2:] - } - if args[0] == "unlim" { - limit = maxQueueLimit + case "single": + limit = 1 args = args[1:] - continue + + default: + noarg = true } - break + if noarg { + break + } } if len(args) < 2 { |
