Skip to content

Commit 1230ec0

Browse files
committed
Vutils
1 parent 81cd508 commit 1230ec0

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

include/Vutils.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -1280,7 +1280,7 @@ class Socket : public LastError
12801280
VUResult vuapi accept(Handle& socket);
12811281

12821282
VUResult vuapi connect(const Endpoint& endpoint);
1283-
VUResult vuapi disconnect(const shutdowns_t flags = SD_BOTH);
1283+
VUResult vuapi disconnect(const shutdowns_t flags = SD_BOTH, const bool cleanup = true);
12841284

12851285
IResult vuapi send(const char* ptr_data, int size, const flags_t flags = MSG_NONE);
12861286
IResult vuapi send(const Buffer& data, const flags_t flags = MSG_NONE);
@@ -1382,7 +1382,7 @@ class AsyncSocket : public LastError
13821382
IResult vuapi close();
13831383

13841384
std::set<SOCKET> vuapi get_connections();
1385-
VUResult vuapi disconnect_connections(const Socket::shutdowns_t flags = SD_BOTH);
1385+
VUResult vuapi disconnect_connections(const Socket::shutdowns_t flags = SD_BOTH, const bool cleanup = true);
13861386

13871387
IResult vuapi send(const SOCKET& connection, const char* ptr_data, int size, const Socket::flags_t flags = MSG_NONE);
13881388
IResult vuapi send(const SOCKET& connection, const Buffer& data, const Socket::flags_t flags = MSG_NONE);

src/details/asyncsocket.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -194,14 +194,14 @@ std::set<SOCKET> vuapi AsyncSocket::get_connections()
194194
return result;
195195
}
196196

197-
VUResult vuapi AsyncSocket::disconnect_connections(const Socket::shutdowns_t flags)
197+
VUResult vuapi AsyncSocket::disconnect_connections(const Socket::shutdowns_t flags, const bool cleanup)
198198
{
199199
auto connections = this->get_connections();
200200
for (const auto& e : connections)
201201
{
202202
vu::Socket socket;
203203
socket.attach(e);
204-
socket.disconnect(flags);
204+
socket.disconnect(flags, cleanup);
205205
}
206206

207207
return VU_OK;

src/details/socket.cpp

+13-1
Original file line numberDiff line numberDiff line change
@@ -623,19 +623,31 @@ VUResult vuapi Socket::close()
623623
return VU_OK;
624624
}
625625

626-
VUResult vuapi Socket::disconnect(const shutdowns_t flags)
626+
VUResult vuapi Socket::disconnect(const shutdowns_t flags, const bool cleanup)
627627
{
628628
if (!this->available())
629629
{
630630
return 1;
631631
}
632632

633+
if (cleanup) // clean-up all remaining data in the socket
634+
{
635+
vu::Buffer temp;
636+
this->recv_all(temp);
637+
}
638+
633639
if (::shutdown(m_socket, flags) == SOCKET_ERROR)
634640
{
635641
m_last_error_code = GetLastError();
636642
return 2;
637643
}
638644

645+
if (closesocket(m_socket) == SOCKET_ERROR)
646+
{
647+
m_last_error_code = GetLastError();
648+
return 3;
649+
}
650+
639651
return VU_OK;
640652
}
641653

0 commit comments

Comments
 (0)