From 8e972fc86a259311d87d0a0e2e3aa1b6722fa894 Mon Sep 17 00:00:00 2001 From: Alexander Menzhinsky Date: Fri, 23 Mar 2018 12:02:58 +0300 Subject: [PATCH] Improve broker address parsing --- options.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/options.go b/options.go index 03c4aa12..59042f7e 100644 --- a/options.go +++ b/options.go @@ -17,6 +17,7 @@ package mqtt import ( "crypto/tls" "net/url" + "strings" "time" ) @@ -114,12 +115,22 @@ func NewClientOptions() *ClientOptions { // Where "scheme" is one of "tcp", "ssl", or "ws", "host" is the ip-address (or hostname) // and "port" is the port on which the broker is accepting connections. // +// Default values for hostname is "127.0.0.1", for schema is "tcp://". +// // An example broker URI would look like: tcp://foobar.com:1883 func (o *ClientOptions) AddBroker(server string) *ClientOptions { + if len(server) > 0 && server[0] == ':' { + server = "127.0.0.1" + server + } + if !strings.Contains(server, "://") { + server = "tcp://" + server + } brokerURI, err := url.Parse(server) - if err == nil { - o.Servers = append(o.Servers, brokerURI) + if err != nil { + ERROR.Println(CLI, "Failed to parse %q broker address: %s", server, err) + return o } + o.Servers = append(o.Servers, brokerURI) return o }