diff --git a/src/Transport/Failover/FailoverTransport.cs b/src/Transport/Failover/FailoverTransport.cs
index 7fca5ae..c3faee0 100644
--- a/src/Transport/Failover/FailoverTransport.cs
+++ b/src/Transport/Failover/FailoverTransport.cs
@@ -90,6 +90,7 @@
 	 	private bool priorityBackup = false;
     	private List<Uri> priorityList = new List<Uri>();
     	private bool priorityBackupAvailable = false;
+        private String sslProtocol = null;
 
 		// Not Sure how to work these back in with all the changes.
 		//private int asyncTimeout = 45000;
@@ -1032,6 +1033,11 @@
 
         private bool DoConnect()
         {
+            if (this.sslProtocol != null)
+            {
+                Tcp.SslContext.GetCurrent().SslProtocol = this.sslProtocol;
+            }
+
             lock(reconnectMutex)
             {
 				if (disposed || connectionFailure != null)
@@ -1205,6 +1211,11 @@
 	                            }
 
 	                            connected = true;
+                                if (this.sslProtocol == null)
+                                {
+                                    this.sslProtocol = Tcp.SslContext.GetCurrent().SslProtocol;
+                                }
+
 	                            return false;
 	                        }
 							catch (Exception e) 
diff --git a/src/Transport/Tcp/SslContext.cs b/src/Transport/Tcp/SslContext.cs
new file mode 100644
index 0000000..d35e0e2
--- /dev/null
+++ b/src/Transport/Tcp/SslContext.cs
@@ -0,0 +1,41 @@
+﻿using System;
+using System.Collections.Generic;
+namespace Apache.NMS.ActiveMQ.Transport.Tcp
+{
+    class SslContext
+    {
+        private String sslProtocol;
+
+        public SslContext() : this("Tls")
+        {
+        }
+
+        public SslContext(String protocol)
+        {
+            this.sslProtocol = protocol;
+        }
+
+        public String SslProtocol
+        {
+            get { return this.sslProtocol; }
+            set { this.sslProtocol = value; }
+        }
+
+        [ThreadStatic]
+        static private SslContext current;
+
+        static public SslContext GetCurrent()
+        {
+            if (current == null)
+            {
+                current = new SslContext();
+            }
+            return current;
+        }
+
+        static public void SetCurrent(SslContext context)
+        {
+            current = context;
+        }
+    }
+}
diff --git a/src/Transport/Tcp/SslTransportFactory.cs b/src/Transport/Tcp/SslTransportFactory.cs
index 080aac3..2fdb7a1 100644
--- a/src/Transport/Tcp/SslTransportFactory.cs
+++ b/src/Transport/Tcp/SslTransportFactory.cs
@@ -97,6 +97,16 @@
             Tracer.Debug("Creating new instance of the SSL Transport.");
 			SslTransport transport = new SslTransport(location, socket, wireFormat);
 
+            if (this.sslProtocol == null)
+            {
+                this.sslProtocol = SslContext.GetCurrent().SslProtocol;
+            }
+            else
+            {
+                SslContext.GetCurrent().SslProtocol = this.sslProtocol;
+            }
+            Tracer.DebugFormat("SslProtocol: {0}", this.sslProtocol);
+
             transport.ClientCertSubject = HttpUtility.UrlDecode(this.clientCertSubject);
             transport.ClientCertFilename = this.clientCertFilename;
             transport.ClientCertPassword = this.clientCertPassword;
