Skip to content

Commit 50c5921

Browse files
authored
fix(rt): Swap User-Agent and x-amz-user-agent headers (#158)
1 parent 5153752 commit 50c5921

File tree

2 files changed

+9
-2
lines changed
  • client-runtime/protocols/http/common

2 files changed

+9
-2
lines changed

client-runtime/protocols/http/common/src/aws/sdk/kotlin/runtime/http/middleware/UserAgent.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,12 @@ public class UserAgent(private val awsUserAgentMetadata: AwsUserAgentMetadata) :
3838

3939
override fun <I, O> install(operation: SdkHttpOperation<I, O>) {
4040
operation.execution.mutate.intercept { req, next ->
41-
req.subject.headers[USER_AGENT] = awsUserAgentMetadata.userAgent
42-
req.subject.headers[X_AMZ_USER_AGENT] = awsUserAgentMetadata.xAmzUserAgent
41+
// NOTE: Due to legacy issues with processing the user agent, the original content for
42+
// x-amz-user-agent and User-Agent is swapped here. See top note in the
43+
// sdk-user-agent-header SEP and https://github.com/awslabs/smithy-kotlin/issues/373
44+
// for further details.
45+
req.subject.headers[USER_AGENT] = awsUserAgentMetadata.xAmzUserAgent
46+
req.subject.headers[X_AMZ_USER_AGENT] = awsUserAgentMetadata.userAgent
4347
next.call(req)
4448
}
4549
}

client-runtime/protocols/http/common/test/aws/sdk/kotlin/runtime/http/middleware/UserAgentTest.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import software.aws.clientrt.http.sdkHttpClient
2020
import software.aws.clientrt.time.Instant
2121
import software.aws.clientrt.util.get
2222
import kotlin.test.Test
23+
import kotlin.test.assertEquals
2324
import kotlin.test.assertTrue
2425

2526
class UserAgentTest {
@@ -53,5 +54,7 @@ class UserAgentTest {
5354
val request = op.context[HttpOperationContext.HttpCallList].last().request
5455
assertTrue(request.headers.contains(USER_AGENT))
5556
assertTrue(request.headers.contains(X_AMZ_USER_AGENT))
57+
assertEquals("aws-sdk-kotlin/1.2.3", request.headers[X_AMZ_USER_AGENT])
58+
assertTrue(request.headers[USER_AGENT]!!.startsWith("aws-sdk-kotlin/1.2.3 api/test-service/1.2.3"))
5659
}
5760
}

0 commit comments

Comments
 (0)