@@ -161,19 +161,52 @@ void WinINetSyncHttpClient::DoAddHeaders(void* hHttpRequest, Aws::String& header
161161
162162uint64_t WinINetSyncHttpClient::DoWriteData (void * hHttpRequest, char * streamBuffer, uint64_t bytesRead, bool isChunked) const
163163{
164- AWS_UNREFERENCED_PARAM (isChunked);
165164 DWORD bytesWritten = 0 ;
166- if (!InternetWriteFile (hHttpRequest, streamBuffer, (DWORD)bytesRead, &bytesWritten))
165+ uint64_t totalBytesWritten = 0 ;
166+ const char CRLF[] = " \r\n " ;
167+
168+ if (isChunked)
167169 {
168- return 0 ;
170+ Aws::String chunkSizeHexString = StringUtils::ToHexString (bytesRead) + CRLF;
171+
172+ if (!InternetWriteFile (hHttpRequest, chunkSizeHexString.c_str (), (DWORD)chunkSizeHexString.size (), &bytesWritten))
173+ {
174+ return totalBytesWritten;
175+ }
176+ totalBytesWritten += bytesWritten;
177+ if (!InternetWriteFile (hHttpRequest, streamBuffer, (DWORD)bytesRead, &bytesWritten))
178+ {
179+ return totalBytesWritten;
180+ }
181+ totalBytesWritten += bytesWritten;
182+ if (!InternetWriteFile (hHttpRequest, CRLF, (DWORD)(sizeof (CRLF) - 1 ), &bytesWritten))
183+ {
184+ return totalBytesWritten;
185+ }
186+ totalBytesWritten += bytesWritten;
169187 }
170- return bytesWritten;
188+ else
189+ {
190+ if (!InternetWriteFile (hHttpRequest, streamBuffer, (DWORD)bytesRead, &bytesWritten))
191+ {
192+ return totalBytesWritten;
193+ }
194+ totalBytesWritten += bytesWritten;
195+ }
196+
197+ return totalBytesWritten;
171198}
172199
173200uint64_t WinINetSyncHttpClient::FinalizeWriteData (void * hHttpRequest) const
174201{
175- AWS_UNREFERENCED_PARAM (hHttpRequest);
176- return 0 ;
202+ DWORD bytesWritten = 0 ;
203+ const char trailingCRLF[] = " 0\r\n\r\n " ;
204+ if (!InternetWriteFile (hHttpRequest, trailingCRLF, (DWORD)(sizeof (trailingCRLF) - 1 ), &bytesWritten))
205+ {
206+ return 0 ;
207+ }
208+
209+ return bytesWritten;
177210}
178211
179212bool WinINetSyncHttpClient::DoReceiveResponse (void * hHttpRequest) const
0 commit comments