From e895bfa390d682167f53f4e4660bfa5d49c5bb79 Mon Sep 17 00:00:00 2001
From: An Phung <an.phung@limina.com>
Date: Tue, 22 Oct 2019 14:48:33 +0200
Subject: [PATCH] Add server name to tls config

---
 initiator.go | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/initiator.go b/initiator.go
index 2ce02ace..59289095 100644
--- a/initiator.go
+++ b/initiator.go
@@ -3,9 +3,12 @@ package quickfix
 import (
 	"bufio"
 	"crypto/tls"
-	"golang.org/x/net/proxy"
+	"net"
+	"net/url"
 	"sync"
 	"time"
+
+	"golang.org/x/net/proxy"
 )
 
 //Initiator initiates connections and processes messages for all sessions.
@@ -150,6 +153,11 @@ func (i *Initiator) handleConnection(session *session, tlsConfig *tls.Config, di
 			session.log.OnEventf("Failed to connect: %v", err)
 			goto reconnect
 		} else if tlsConfig != nil {
+			myURL := url.URL{Host: address}
+			tlsConfig.ServerName = ""
+			if net.ParseIP(myURL.Hostname()) == nil {
+				tlsConfig.ServerName = myURL.Hostname()
+			}
 			tlsConn := tls.Client(netConn, tlsConfig)
 			if err = tlsConn.Handshake(); err != nil {
 				session.log.OnEventf("Failed handshake: %v", err)
-- 
GitLab