Teradata connector KO when trying to connect through proxy

Hi team,

The teradata connector works fine when we are in the same domain than the database. But we are facing an issue when there's a proxy to pass. For your information, if we put the host including its domain, it does not work. If we put the IP of the host it's ok.

We can not work like that because we want to use a round robin feature with several nodes in the same cluster. But for this issue I have only tested one of the node (so host + cop1 + domain).

We suspect it comes from the .net implementation because :

  • ping and nslookup are fine : host is well translated to its IP by windows
  • it's working if, instead of the host + domain we put the IP of the host.
  • I have tested the Teradata Simba odbc driver 17.20 and everything works well. Other guys have tested the Teradata odbc driver 17.10 and it's also working with the host including domain. No particular option was set => all default ones.
  • the log is showing an issue in the proxy tunnel method (sorry a part is in french => timeout) :

[0] Exception message: [.NET Data Provider for Teradata] [100002] Cannot create connection within the time specified.
[Socket Transport] [10060] System.Net.Sockets.SocketException (0x80004005): Une tentative de connexion a échoué car le parti connecté n’a pas répondu convenablement au-delà d’une certaine durée ou une connexion établie a échoué car l’hôte de connexion n’a pas répondu
à Teradata.Client.Provider.TunnelingProxy.CreateTunnel(UtlStopwatchWrapper timer, Int32 timeout, Socket proxySocket, String destinationHostName, Int32 destinationPort)
à Teradata.Client.Provider.WpTcpTransport.WaitOnSockets(List1 sockets, UtlStopwatchWrapper timer, Int32 timeout, Int32 lccTimeout, Int32 maxConcurrentSockets, TdErrorCollection errors) [0] Exception type: TdException [0] Exception source: .NET Data Provider for Teradata [0] Exception stack trace: à Teradata.Client.Provider.WpTcpTransport.<>c.<WaitOnSockets>b__77_0() à Teradata.Client.Provider.UtlStopwatchWrapper.GetTimeRemaining(Int32 timeout, Action timeoutAction) à Teradata.Client.Provider.WpTcpTransport.WaitOnSockets(List1 sockets, UtlStopwatchWrapper timer, Int32 timeout, Int32 lccTimeout, Int32 maxConcurrentSockets, TdErrorCollection errors)
à Teradata.Client.Provider.WpTcpTransport.Connect(UtlStopwatchWrapper timer, Int32 timeout)
à Teradata.Client.Provider.WpSession.OpenTransport(UtlStopwatchWrapper timer, Int32 connectionTimeout)
à Teradata.Client.Provider.WpSession.Open(Int32 connectionTimeout, String password)
à Teradata.Client.Provider.ExeContext`3.Open(Int32 timeout, String password)
à Teradata.Client.Provider.Connection.Open(UtlConnectionString connectionString, UInt32 timeout)
à Teradata.Client.Provider.ConnectionPool.CreateConnection(UInt32 timeout)
à Teradata.Client.Provider.ConnectionPool.GetConnectionFromPool(Object owningObject)
à Teradata.Client.Provider.ConnectionFactory.GetConnection(Object owningObject, UtlConnectionString conStr)
à Teradata.Client.Provider.TdConnection.Open()
à Morph.CSContracts.DataConnectors.DbDataConnectorBase.TestUnsafe(String connectionString)
à System.Threading.Tasks.Task.Execute()

Using ProxyBypassHosts property enabled me to bypass the proxy and it worked. So it seems the proxy was not needed.

Thank you for posting the solution!