@@ -1038,37 +1038,38 @@ std::shared_ptr<Aws::Http::HttpResponse> AWSClient::MakeHttpRequest(std::shared_
10381038 return m_httpClient->MakeRequest (request, m_readRateLimiter.get (), m_writeRateLimiter.get ());
10391039}
10401040
1041- void AWSClient::AppendRecursionDetectionHeader (std::shared_ptr<Aws::Http::HttpRequest> ioRequest) {
1042- if (!ioRequest || ioRequest->HasHeader (Aws::Http::X_AMZN_TRACE_ID_HEADER)) {
1043- return ;
1044- }
1045- Aws::String awsLambdaFunctionName = Aws::Environment::GetEnv (AWS_LAMBDA_FUNCTION_NAME);
1046- if (awsLambdaFunctionName.empty ()) {
1047- return ;
1048- }
1049- Aws::String xAmznTraceIdVal = Aws::Environment::GetEnv (X_AMZN_TRACE_ID);
1050- if (xAmznTraceIdVal.empty ()) {
1051- return ;
1052- }
1053-
1054- // Escape all non-printable ASCII characters by percent encoding
1055- Aws::OStringStream xAmznTraceIdValEncodedStr;
1056- for (const char ch : xAmznTraceIdVal)
1057- {
1058- if (ch >= 0x20 && ch <= 0x7e ) // ascii chars [32-126] or [' ' to '~'] are not escaped
1059- {
1060- xAmznTraceIdValEncodedStr << ch;
1041+ void AWSClient::AppendRecursionDetectionHeader (std::shared_ptr<Aws::Http::HttpRequest> ioRequest)
1042+ {
1043+ if (!ioRequest || ioRequest->HasHeader (Aws::Http::X_AMZN_TRACE_ID_HEADER)) {
1044+ return ;
10611045 }
1062- else
1046+ Aws::String awsLambdaFunctionName = Aws::Environment::GetEnv (AWS_LAMBDA_FUNCTION_NAME);
1047+ if (awsLambdaFunctionName.empty ()) {
1048+ return ;
1049+ }
1050+ Aws::String xAmznTraceIdVal = Aws::Environment::GetEnv (X_AMZN_TRACE_ID);
1051+ if (xAmznTraceIdVal.empty ()) {
1052+ return ;
1053+ }
1054+
1055+ // Escape all non-printable ASCII characters by percent encoding
1056+ Aws::OStringStream xAmznTraceIdValEncodedStr;
1057+ for (const char ch : xAmznTraceIdVal)
10631058 {
1064- // A percent-encoded octet is encoded as a character triplet
1065- xAmznTraceIdValEncodedStr << ' %' // consisting of the percent character "%"
1066- << std::hex << std::setfill (' 0' ) << std::setw (2 ) << std::uppercase
1067- << (size_t ) ch // followed by the two hexadecimal digits representing that octet's numeric value
1068- << std::dec << std::setfill (' ' ) << std::setw (0 ) << std::nouppercase;
1059+ if (ch >= 0x20 && ch <= 0x7e ) // ascii chars [32-126] or [' ' to '~'] are not escaped
1060+ {
1061+ xAmznTraceIdValEncodedStr << ch;
1062+ }
1063+ else
1064+ {
1065+ // A percent-encoded octet is encoded as a character triplet
1066+ xAmznTraceIdValEncodedStr << ' %' // consisting of the percent character "%"
1067+ << std::hex << std::setfill (' 0' ) << std::setw (2 ) << std::uppercase
1068+ << (size_t ) ch // followed by the two hexadecimal digits representing that octet's numeric value
1069+ << std::dec << std::setfill (' ' ) << std::setw (0 ) << std::nouppercase;
1070+ }
10691071 }
1070- }
1071- xAmznTraceIdVal = xAmznTraceIdValEncodedStr.str ();
1072+ xAmznTraceIdVal = xAmznTraceIdValEncodedStr.str ();
10721073
1073- ioRequest->SetHeaderValue (Aws::Http::X_AMZN_TRACE_ID_HEADER, xAmznTraceIdVal);
1074+ ioRequest->SetHeaderValue (Aws::Http::X_AMZN_TRACE_ID_HEADER, xAmznTraceIdVal);
10741075}
0 commit comments