diff --git a/main.go b/main.go index 4fc03fe..601cb35 100644 --- a/main.go +++ b/main.go @@ -15,11 +15,11 @@ import ( ) const ( - Version = "v0.1.0" + Version = "v0.1.1" configurationFilePath = "httpAuth.cfg" default_xmpp_server_address = "127.0.0.1" - default_xmpp_server_port = "5347" + default_xmpp_server_port = "5347" ) var ( @@ -35,12 +35,12 @@ func init() { // HTTP config httpTimeout, err := strconv.Atoi(mapConfig["http_timeoute_sec"]) if err == nil { - log.Println("Define HTTP timeout to "+strconv.Itoa(httpTimeout)+" second") + log.Println("Define HTTP timeout to " + strconv.Itoa(httpTimeout) + " second") http.TimeoutSec = httpTimeout } httpPort, err := strconv.Atoi(mapConfig["http_port"]) if err == nil { - log.Println("Define HTTP port to "+strconv.Itoa(httpPort)) + log.Println("Define HTTP port to " + strconv.Itoa(httpPort)) http.HttpPortBind = httpPort } diff --git a/xmpp/client.go b/xmpp/client.go index 161d3f8..1123bf3 100644 --- a/xmpp/client.go +++ b/xmpp/client.go @@ -32,7 +32,7 @@ func (client *Client) askViaIQ() { m := xmpp.Iq{Type: xmpp.IQTypeGet, To: client.JID, From: jid.Domain, Id: stanzaIDstr} confirm := &xmpp.Confirm{Id: client.Transaction, Method: client.Method, URL: client.Domain} m.PayloadEncode(confirm) - WaitMessageAnswers[stanzaIDstr] = client + WaitIqMessages[stanzaIDstr] = client comp.Out <- m } diff --git a/xmpp/xmpp.go b/xmpp/xmpp.go index 7ce36ad..6e65735 100644 --- a/xmpp/xmpp.go +++ b/xmpp/xmpp.go @@ -28,6 +28,7 @@ var ( ChanAction = make(chan string) WaitMessageAnswers = make(map[string]*Client) + WaitIqMessages = make(map[string]*Client) Debug = true ) @@ -76,14 +77,21 @@ func mainXMPP() { case xmpp.NSHTTPAuth: confirm := &xmpp.Confirm{} v.PayloadDecode(confirm) - client := WaitMessageAnswers[v.Id] - delete(WaitMessageAnswers, v.Id) + client := WaitIqMessages[v.Id] + delete(WaitIqMessages, v.Id) processConfirm(v, client) default: - reply := v.Response(xmpp.IQTypeError) - reply.PayloadEncode(xmpp.NewError("cancel", xmpp.FeatureNotImplemented, "")) - comp.Out <- reply + // Handle reply iq that doesn't contain HTTP-Auth namespace + client := WaitIqMessages[v.Id] + delete(WaitIqMessages, v.Id) + processConfirm(v, client) + + if client == nil { + reply := v.Response(xmpp.IQTypeError) + reply.PayloadEncode(xmpp.NewError("cancel", xmpp.FeatureNotImplemented, "")) + comp.Out <- reply + } } default: