diff --git a/examples/objective-c/helloworld/main.m b/examples/objective-c/helloworld/main.m index b67380812b4dc6da2ef63ad4839ba1188731ddfe..755dce33df9dd09dc3dbbb417239c4c7467999fd 100644 --- a/examples/objective-c/helloworld/main.m +++ b/examples/objective-c/helloworld/main.m @@ -43,7 +43,7 @@ static NSString * const kHostAddress = @"localhost:50051"; int main(int argc, char * argv[]) { @autoreleasepool { [GRPCCall useInsecureConnectionsForHost:kHostAddress]; - [GRPCCall setUserAgentPrefix:@"HelloWorld/1.0"]; + [GRPCCall setUserAgentPrefix:@"HelloWorld/1.0" forHost:kHostAddress]; HLWGreeter *client = [[HLWGreeter alloc] initWithHost:kHostAddress]; diff --git a/src/objective-c/GRPCClient/GRPCCall+ChannelArg.h b/src/objective-c/GRPCClient/GRPCCall+ChannelArg.h index ec1557df7fadf2842b587fe9f6cb00a03b701555..bd6b064f166b07d7399312602deff3c513952c9d 100644 --- a/src/objective-c/GRPCClient/GRPCCall+ChannelArg.h +++ b/src/objective-c/GRPCClient/GRPCCall+ChannelArg.h @@ -38,10 +38,9 @@ @interface GRPCCall (ChannelArg) /** - * Use the provided @c userAgentPrefix at the beginning of the HTTP User Agent string for all calls. + * Use the provided @c userAgentPrefix at the beginning of the HTTP User Agent string for all calls + * to the specified @c host. */ -+ (void)setUserAgentPrefix:(NSString *)userAgentPrefix; - -+ (NSString *)userAgentPrefix; ++ (void)setUserAgentPrefix:(NSString *)userAgentPrefix forHost:(NSString *)host; @end diff --git a/src/objective-c/GRPCClient/GRPCCall+ChannelArg.m b/src/objective-c/GRPCClient/GRPCCall+ChannelArg.m index 32244c3d313da3fc7bb4826dab9c11cc617c0ece..f2821f6abc05791c1adcb2e9b9fc71dd2985d900 100644 --- a/src/objective-c/GRPCClient/GRPCCall+ChannelArg.m +++ b/src/objective-c/GRPCClient/GRPCCall+ChannelArg.m @@ -39,16 +39,13 @@ static NSString *_userAgentPrefix; -+ (void)setUserAgentPrefix:(NSString *)userAgentPrefix { - @synchronized(self) { - _userAgentPrefix = userAgentPrefix; - } -} - -+ (NSString *)userAgentPrefix { - @synchronized(self) { - return _userAgentPrefix; ++ (void)setUserAgentPrefix:(NSString *)userAgentPrefix forHost:(NSString *)host { + if (!host) { + [NSException raise:NSInvalidArgumentException + format:@"host and userAgentPrefix must be provided."]; } + GRPCHost *hostConfig = [GRPCHost hostWithAddress:host]; + hostConfig.userAgentPrefix = userAgentPrefix; } @end diff --git a/src/objective-c/GRPCClient/private/GRPCHost.h b/src/objective-c/GRPCClient/private/GRPCHost.h index 6b4f98746d0caa4382d89885ac6194029d151e60..69a115e88cf92bc137775b49094023a1be4f6a5a 100644 --- a/src/objective-c/GRPCClient/private/GRPCHost.h +++ b/src/objective-c/GRPCClient/private/GRPCHost.h @@ -39,6 +39,7 @@ struct grpc_call; @interface GRPCHost : NSObject @property(nonatomic, readonly) NSString *address; +@property(nonatomic, copy) NSString *userAgentPrefix; /** The following properties should only be modified for testing: */ diff --git a/src/objective-c/GRPCClient/private/GRPCHost.m b/src/objective-c/GRPCClient/private/GRPCHost.m index 8fb9d9172273cd1e1cdc7e35d9dbeec9a7268ccd..5b1ca16e120f6ea7335795c372e43736db53a5c9 100644 --- a/src/objective-c/GRPCClient/private/GRPCHost.m +++ b/src/objective-c/GRPCClient/private/GRPCHost.m @@ -109,9 +109,8 @@ if (!_channel) { NSMutableDictionary *args = [NSMutableDictionary dictionary]; - NSString *userAgentPrefix = [[GRPCCall userAgentPrefix] copy]; - if (userAgentPrefix) { - args[@GRPC_ARG_PRIMARY_USER_AGENT_STRING] = userAgentPrefix; + if (_userAgentPrefix) { + args[@GRPC_ARG_PRIMARY_USER_AGENT_STRING] = _userAgentPrefix; } if (_secure) {