From ee75e95279dcda0868029d039be4469e7545afe7 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Fri, 5 Mar 2010 10:24:11 -0800 Subject: [PATCH] winverbs/nd: allow retrying connect() call The ND specification allows for retrying NDConnector:Connect() calls. Add this support to the winverbs ND provider. Signed-off-by: Sean Hefty --- trunk/ulp/netdirect/user/nd_connect.cpp | 18 +++++++++--------- trunk/ulp/netdirect/user/nd_connect.h | 8 -------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/trunk/ulp/netdirect/user/nd_connect.cpp b/trunk/ulp/netdirect/user/nd_connect.cpp index 81d5f7bd..ce25499a 100644 --- a/trunk/ulp/netdirect/user/nd_connect.cpp +++ b/trunk/ulp/netdirect/user/nd_connect.cpp @@ -39,15 +39,6 @@ CNDConnector::CNDConnector(CNDAdapter *pAdapter) m_pWvConnEp = NULL; } -STDMETHODIMP CNDConnector:: -Init(void) -{ - HRESULT hr; - - hr = m_pAdapter->m_pWvProvider->CreateConnectEndpoint(&m_pWvConnEp); - return NDConvertWVStatus(hr); -} - CNDConnector::~CNDConnector() { if (m_pWvConnEp != NULL) { @@ -132,6 +123,15 @@ Connect(INDEndpoint* pEndpoint, IBAT_PATH_BLOB path; HRESULT hr; + if (m_pWvConnEp != NULL) { + m_pWvConnEp->Release(); + } + + hr = m_pAdapter->m_pWvProvider->CreateConnectEndpoint(&m_pWvConnEp); + if (FAILED(hr)) { + goto out; + } + RtlCopyMemory(&addr, &m_pAdapter->m_Address, AddressLength); if (addr.Sa.sa_family == AF_INET) { addr.Sin.sin_port = LocalPort; diff --git a/trunk/ulp/netdirect/user/nd_connect.h b/trunk/ulp/netdirect/user/nd_connect.h index 2da2f222..ec38fb1f 100644 --- a/trunk/ulp/netdirect/user/nd_connect.h +++ b/trunk/ulp/netdirect/user/nd_connect.h @@ -94,16 +94,9 @@ public: goto err1; } - hr = conn->Init(); - if (FAILED(hr)) { - goto err2; - } - *ppConnector = conn; return ND_SUCCESS; - err2: - conn->Release(); err1: *ppConnector = NULL; return hr; @@ -113,7 +106,6 @@ public: CNDAdapter *m_pAdapter; protected: - STDMETHODIMP Init(); }; #endif // _ND_CONNECTOR_H_ -- 2.46.0