Skip to content

Commit 4a2a3c7

Browse files
committed
made http request rfc-valid
1 parent 5a2a4d3 commit 4a2a3c7

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/common/AWSClient4.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -127,11 +127,13 @@ char* AWSClient4::createCanonicalHeaders() {
127127

128128
char* AWSClient4::createRequestHeaders(char* signature) {
129129
char headers[1000] = "";
130-
sprintf(headers, "%sContent-Type: %s\n", headers, contentType);
131-
sprintf(headers, "%sHost: %s\n", headers, createHost());
132-
sprintf(headers, "%sx-amz-content-sha256: %s\n", headers, payloadHash);
133-
sprintf(headers, "%sx-amz-date: %sT%sZ\n", headers, awsDate, awsTime);
134-
sprintf(headers, "%sAuthorization: AWS4-HMAC-SHA256 Credential=%s/%s/%s/%s/aws4_request,SignedHeaders=%s,Signature=%s\n", headers, awsKeyID, awsDate, awsRegion, awsService, signedHeaders, signature);
130+
sprintf(headers, "%sContent-Type: %s\r\n", headers, contentType);
131+
sprintf(headers, "%sConnection: close\r\n", headers);
132+
sprintf(headers, "%sContent-Length: %d\r\n", headers, strlen(payload.getCStr()));
133+
sprintf(headers, "%sHost: %s\r\n", headers, createHost());
134+
sprintf(headers, "%sx-amz-content-sha256: %s\r\n", headers, payloadHash);
135+
sprintf(headers, "%sx-amz-date: %sT%sZ\r\n", headers, awsDate, awsTime);
136+
sprintf(headers, "%sAuthorization: AWS4-HMAC-SHA256 Credential=%s/%s/%s/%s/aws4_request,SignedHeaders=%s,Signature=%s\r\n", headers, awsKeyID, awsDate, awsRegion, awsService, signedHeaders, signature);
135137
return headers;
136138
}
137139

@@ -228,8 +230,8 @@ char* AWSClient4::createRequest(MinimalString &reqPayload) {
228230
char *headers = createRequestHeaders(signature);
229231

230232
char *host = createHost();
231-
char* request = new char[strlen(method) + strlen(host) + strlen(awsPath) + strlen(headers) + strlen(reqPayload.getCStr()) + 12]();
232-
sprintf(request, "%s %s HTTP/1.1\n%s\n%s", method, awsPath, headers, reqPayload.getCStr());
233+
char* request = new char[strlen(method) + strlen(host) + strlen(awsPath) + strlen(headers) + strlen(reqPayload.getCStr()) + 16]();
234+
sprintf(request, "%s %s HTTP/1.1\r\n%s\r\n%s\r\n\r\n", method, awsPath, headers, reqPayload.getCStr());
233235

234236
return request;
235237
}

0 commit comments

Comments
 (0)