summaryrefslogtreecommitdiffstats
path: root/lldb/source/Core/ConnectionFileDescriptor.cpp
diff options
context:
space:
mode:
authorCarlo Kok <ck@remobjects.com>2013-09-26 18:49:53 +0000
committerCarlo Kok <ck@remobjects.com>2013-09-26 18:49:53 +0000
commita46964f1bb93d2d4b8bd2880d7007baa53887f29 (patch)
tree5c7c25d4318457f4ee8aabaae178ed8012e4ed0a /lldb/source/Core/ConnectionFileDescriptor.cpp
parente435f94b69a7a9102e725af402d45513d2941dfe (diff)
downloadbcm5719-llvm-a46964f1bb93d2d4b8bd2880d7007baa53887f29.tar.gz
bcm5719-llvm-a46964f1bb93d2d4b8bd2880d7007baa53887f29.zip
On windows a socket and file descriptor aren't the same kind of handle, pass the type to Close so it uses the right api to close it.
llvm-svn: 191446
Diffstat (limited to 'lldb/source/Core/ConnectionFileDescriptor.cpp')
-rw-r--r--lldb/source/Core/ConnectionFileDescriptor.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/lldb/source/Core/ConnectionFileDescriptor.cpp b/lldb/source/Core/ConnectionFileDescriptor.cpp
index de5ac59e33b..3a24aa04602 100644
--- a/lldb/source/Core/ConnectionFileDescriptor.cpp
+++ b/lldb/source/Core/ConnectionFileDescriptor.cpp
@@ -398,16 +398,16 @@ ConnectionFileDescriptor::Disconnect (Error *error_ptr)
{
if (m_fd_send == m_fd_recv)
{
- status = Close (m_fd_send, error_ptr);
+ status = Close (m_fd_send, m_fd_send_type, error_ptr);
}
else
{
// File descriptors are the different, close both if needed
if (m_fd_send >= 0)
- status = Close (m_fd_send, error_ptr);
+ status = Close (m_fd_send, m_fd_send_type, error_ptr);
if (m_fd_recv >= 0)
{
- ConnectionStatus recv_status = Close (m_fd_recv, error_ptr);
+ ConnectionStatus recv_status = Close (m_fd_recv, m_fd_recv_type, error_ptr);
if (status == eConnectionStatusSuccess)
status = recv_status;
}
@@ -1146,7 +1146,7 @@ ConnectionFileDescriptor::BytesAvailable (uint32_t timeout_usec, Error *error_pt
#endif
ConnectionStatus
-ConnectionFileDescriptor::Close (int& fd, Error *error_ptr)
+ConnectionFileDescriptor::Close (int& fd, FDType type, Error *error_ptr)
{
if (error_ptr)
error_ptr->Clear();
@@ -1162,7 +1162,11 @@ ConnectionFileDescriptor::Close (int& fd, Error *error_ptr)
Log *log(lldb_private::GetLogIfAnyCategoriesSet (LIBLLDB_LOG_CONNECTION));
if (log)
log->Printf ("%p ConnectionFileDescriptor::Close (fd = %i)", this,fd);
-
+#if _WIN32
+ if (type != eFDTypeFile)
+ success = closesocket(fd) == 0;
+ else
+#endif
success = ::close (fd) == 0;
// A reference to a FD was passed in, set it to an invalid value
fd = -1;
@@ -1301,7 +1305,7 @@ ConnectionFileDescriptor::SocketListen (uint16_t listen_port_num, Error *error_p
{
if (error_ptr)
error_ptr->SetErrorToErrno();
- Close (listen_port, NULL);
+ Close (listen_port, eFDTypeSocket, NULL);
return eConnectionStatusError;
}
@@ -1310,7 +1314,7 @@ ConnectionFileDescriptor::SocketListen (uint16_t listen_port_num, Error *error_p
{
if (error_ptr)
error_ptr->SetErrorToErrno();
- Close (listen_port, NULL);
+ Close (listen_port, eFDTypeSocket, NULL);
return eConnectionStatusError;
}
@@ -1319,13 +1323,13 @@ ConnectionFileDescriptor::SocketListen (uint16_t listen_port_num, Error *error_p
{
if (error_ptr)
error_ptr->SetErrorToErrno();
- Close (listen_port, NULL);
+ Close (listen_port, eFDTypeSocket, NULL);
return eConnectionStatusError;
}
}
// We are done with the listen port
- Close (listen_port, NULL);
+ Close (listen_port, eFDTypeSocket, NULL);
m_should_close_fd = true;
OpenPOWER on IntegriCloud