diff --git a/config/connection_policy.go b/config/connection_policy.go index f5c5ee2e..62a968a2 100644 --- a/config/connection_policy.go +++ b/config/connection_policy.go @@ -71,6 +71,9 @@ var buildDialerFor = func(p *ConnectionPolicy, conf *Account, verifier ourtls.Ve return p.buildDialerFor(conf, verifier) } +// DefaultXMPPPort is the default port which XMPP clients should use for connecting to XMPP servers +const DefaultXMPPPort = 5222 + func (p *ConnectionPolicy) buildDialerFor(conf *Account, verifier ourtls.Verifier) (interfaces.Dialer, error) { //Account is a bare JID jidParts := strings.SplitN(conf.Account, "@", 2) @@ -138,7 +141,7 @@ func (p *ConnectionPolicy) buildDialerFor(conf *Account, verifier ourtls.Verifie customServerAddress = true } - if conf.Port > 0 { + if conf.Port > 0 && conf.Port != DefaultXMPPPort { port = strconv.Itoa(conf.Port) customServerAddress = true } diff --git a/config/connection_policy_test.go b/config/connection_policy_test.go index 96d337a5..d0e5a534 100644 --- a/config/connection_policy_test.go +++ b/config/connection_policy_test.go @@ -128,6 +128,19 @@ func (s *ConnectionPolicySuite) Test_buildDialerFor_UsesACustomPortEvenIfNoCusto c.Assert(dialer.ServerAddress(), Equals, "coy.im:5236") } +func (s *ConnectionPolicySuite) Test_buildDialerFor_UsesNoCustomPortIfItsTheDefault(c *C) { + policy := ConnectionPolicy{DialerFactory: xmpp.DialerFactory, torState: mockTorState("", false)} + + dialer, err := policy.buildDialerFor(&Account{ + Account: "coyim@coy.im", + Port: 5222, + }, nil) + + c.Assert(err, IsNil) + c.Assert(dialer.ServerAddress(), Equals, "") + c.Assert(dialer.GetServer(), Equals, "coy.im:5222") +} + func (s *ConnectionPolicySuite) Test_buildDialerFor_FailsIfItCantDoProxyCreation(c *C) { policy := ConnectionPolicy{DialerFactory: xmpp.DialerFactory, torState: mockTorState("", false)}