projects
/
shibboleth
/
cpp-sp.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6cf26b7
)
Apply BSD fix to connect call
author
Scott Cantor
<cantor.2@osu.edu>
Thu, 3 May 2012 22:27:16 +0000
(22:27 +0000)
committer
Scott Cantor
<cantor.2@osu.edu>
Thu, 3 May 2012 22:27:16 +0000
(22:27 +0000)
shibsp/remoting/impl/TCPListener.cpp
patch
|
blob
|
history
diff --git
a/shibsp/remoting/impl/TCPListener.cpp
b/shibsp/remoting/impl/TCPListener.cpp
index
c498163
..
5f07611
100644
(file)
--- a/
shibsp/remoting/impl/TCPListener.cpp
+++ b/
shibsp/remoting/impl/TCPListener.cpp
@@
-232,7
+232,17
@@
bool TCPListener::connect(ShibSocket& s) const
if(SOCKET_ERROR==::connect(s, (const struct sockaddr*)&m_sockaddr, sizeof(m_sockaddr)))
return log_error("connect");
#else
if(SOCKET_ERROR==::connect(s, (const struct sockaddr*)&m_sockaddr, sizeof(m_sockaddr)))
return log_error("connect");
#else
+ // Newer BSDs require the struct length be passed based on the socket address.
+ // Others have no field for that and take the whole struct size like Windows does.
+# ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
+# ifdef HAVE_STRUCT_SOCKADDR_STORAGE
+ if (::connect(s, (const struct sockaddr*)&m_sockaddr, m_sockaddr.ss_len) < 0)
+# else
+ if (::connect(s, (const struct sockaddr*)&m_sockaddr, m_sockaddr.sin_len) < 0)
+# endif
+# else
if (::connect(s, (const struct sockaddr*)&m_sockaddr, sizeof(m_sockaddr)) < 0)
if (::connect(s, (const struct sockaddr*)&m_sockaddr, sizeof(m_sockaddr)) < 0)
+# endif
return log_error("connect");
#endif
return true;
return log_error("connect");
#endif
return true;