Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add constructor overload to STSProfileCredentialsProvider where the client factory returns a shared pointer. #2830

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

teo-tsirpanis
Copy link
Contributor

@teo-tsirpanis teo-tsirpanis commented Jan 26, 2024

Issue #, if available:

Description of changes:

The STSProfileCredentialProvider class has a constructor overload that accepts an STSClient factory function. The problem with this function is that it returns an STSClient*, making lifetime management tricky in certain cases.

This PR introduces an additional overload that accepts an factory that returns a shared_ptr<STSClient>. This will enable the client to be freed automatically when the credentials provider no longer needs it.

The existing constructor overload wraps the STSClient* into a shared pointer with a deleter that does nothing, maintaining compatibility. I also added an overload to disambiguate between creating a credential provider with a nullptr factory.

Check all that applies:

  • Did a review by yourself.
  • Added proper tests to cover this PR. (If tests are not applicable, explain.)
  • Checked if this PR is a breaking (APIs have been changed) change.
  • Checked if this PR will not introduce cross-platform inconsistent behavior.
  • Checked if this PR would require a ReadMe/Wiki update.

Check which platforms you have built SDK on to verify the correctness of this PR.

  • Linux
  • Windows
  • Android
  • MacOS
  • IOS
  • Other Platforms

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@@ -313,7 +313,7 @@ TEST_F(STSProfileCredentialsProviderTest, AssumeRoleWithoutRoleARN)

STSProfileCredentialsProvider credsProvider("default", roleSessionDuration, [](const AWSCredentials&) {
ADD_FAILURE() << "STS Service client should not be used in this scenario.";
return nullptr;
return (STSClient*)nullptr;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new constructor overload caused return nullptr; to be ambiguous. This is a source-breaking change but I don't think returning nullptr is likely in non-test code.

@jmklix
Copy link
Member

jmklix commented Sep 6, 2024

Can you update your PR to remove the .gitignore file change?

@teo-tsirpanis
Copy link
Contributor Author

It was a good change but sure. Done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants