summaryrefslogtreecommitdiff
path: root/csgo-loader/csgo-server/Networking/WebSocket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'csgo-loader/csgo-server/Networking/WebSocket.cpp')
-rw-r--r--csgo-loader/csgo-server/Networking/WebSocket.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/csgo-loader/csgo-server/Networking/WebSocket.cpp b/csgo-loader/csgo-server/Networking/WebSocket.cpp
index 2c42001..75b5731 100644
--- a/csgo-loader/csgo-server/Networking/WebSocket.cpp
+++ b/csgo-loader/csgo-server/Networking/WebSocket.cpp
@@ -21,27 +21,30 @@ namespace Networking
// Receives a response from a request.
ByteArray WebSocket::Request(const char *File, const char *Header, ByteArray &Data)
{
+ DWORD ReceivedSize{};
ByteArray Response;
InternetHandle WebRequest = HttpOpenRequestA(m_Address, "POST", File, 0, 0, 0, INTERNET_FLAG_SECURE | INTERNET_FLAG_KEEP_CONNECTION, 0);
+ if(!WebRequest)
+ return Response;
+
// Make connection request.
bool Sent = HttpSendRequestA(WebRequest, Header, (DWORD)strlen(Header), Data.data(), (DWORD)Data.size());
if(Sent)
{
- DWORD ReceivedSize{};
-
- uint8_t *Block = (uint8_t *)malloc(4096);
+ // Allocate a buffer to read the response into.
+ uint8_t *Block = (uint8_t *)malloc(0x1000);
// Read response.
- while(InternetReadFile(WebRequest, Block, 4096, &ReceivedSize))
+ while(InternetReadFile(WebRequest, Block, 0x1000, &ReceivedSize))
{
- for(size_t n{}; n < std::min< int >(4096, ReceivedSize); ++n)
- {
+ const size_t RequestRange = std::min< int >(0x1000, ReceivedSize);
+ for(size_t n{}; n < RequestRange; ++n)
Response.push_back(Block[n]);
- }
}
+ // Free the buffer to avoid leaking memory.
free(Block);
}