MCPcopy Create free account
hub / github.com/OpenRCT2/OpenRCT2 / ReadBody

Function ReadBody

src/openrct2/core/Http.WinHttp.cpp:126–155  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

124 }
125
126 static std::string ReadBody(HINTERNET hRequest)
127 {
128 std::string body;
129 DWORD dwRealSize{};
130 DWORD dwDownloaded{};
131 do
132 {
133 // Check for available data.
134 DWORD dwSizeToRead{};
135 if (!WinHttpQueryDataAvailable(hRequest, &dwSizeToRead))
136 ThrowWin32Exception("WinHttpQueryDataAvailable");
137
138 // Apparently some servers may report no bytes left to
139 // download incorrectly, so still attempt to read...
140 if (dwSizeToRead == 0)
141 dwSizeToRead = 4096;
142
143 body.resize(dwRealSize + dwSizeToRead);
144 auto dst = reinterpret_cast<LPVOID>(&body[dwRealSize]);
145
146 dwDownloaded = 0;
147 if (!WinHttpReadData(hRequest, dst, dwSizeToRead, &dwDownloaded))
148 ThrowWin32Exception("WinHttpReadData");
149
150 dwRealSize += dwDownloaded;
151 } while (dwDownloaded > 0);
152 body.resize(dwRealSize);
153 body.shrink_to_fit();
154 return body;
155 }
156
157 Response Do(const Request& req)
158 {

Callers 1

DoFunction · 0.85

Calls 1

ThrowWin32ExceptionFunction · 0.85

Tested by

no test coverage detected