Chromium Code Reviews| Index: webrtc/examples/objc/AppRTCMobile/ARDAppEngineClient.m |
| diff --git a/webrtc/examples/objc/AppRTCMobile/ARDAppEngineClient.m b/webrtc/examples/objc/AppRTCMobile/ARDAppEngineClient.m |
| index d707b92d4486be631f5de4deab0d91e4a662aff1..ad7a6c2bf2b4d409ef6e6e159cbe4bb254ff554d 100644 |
| --- a/webrtc/examples/objc/AppRTCMobile/ARDAppEngineClient.m |
| +++ b/webrtc/examples/objc/AppRTCMobile/ARDAppEngineClient.m |
| @@ -57,29 +57,26 @@ static NSInteger const kARDAppEngineClientErrorBadResponse = -1; |
| request.HTTPMethod = @"POST"; |
| __weak ARDAppEngineClient *weakSelf = self; |
| [NSURLConnection sendAsyncRequest:request |
| - completionHandler:^(NSURLResponse *response, |
| - NSData *data, |
| - NSError *error) { |
| - ARDAppEngineClient *strongSelf = weakSelf; |
| - if (error) { |
| - if (completionHandler) { |
| - completionHandler(nil, error); |
| - } |
| - return; |
| - } |
| - ARDJoinResponse *joinResponse = |
| - [ARDJoinResponse responseFromJSONData:data]; |
| - if (!joinResponse) { |
| - if (completionHandler) { |
| - NSError *error = [[self class] badResponseError]; |
| - completionHandler(nil, error); |
| - } |
| - return; |
| - } |
| - if (completionHandler) { |
| - completionHandler(joinResponse, nil); |
| - } |
| - }]; |
| + completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { |
| + ARDAppEngineClient *strongSelf = weakSelf; |
| + if (error) { |
| + if (completionHandler) { |
| + completionHandler(nil, error); |
| + } |
| + return; |
| + } |
| + ARDJoinResponse *joinResponse = [ARDJoinResponse responseFromJSONData:data]; |
| + if (!joinResponse) { |
| + if (completionHandler) { |
| + NSError *error = [[self class] badResponseError]; |
| + completionHandler(nil, error); |
| + } |
| + return; |
| + } |
| + if (completionHandler) { |
| + completionHandler(joinResponse, nil); |
| + } |
| + }]; |
| } |
| - (void)sendMessage:(ARDSignalingMessage *)message |
| @@ -138,17 +135,24 @@ static NSInteger const kARDAppEngineClientErrorBadResponse = -1; |
| NSURL *url = [NSURL URLWithString:urlString]; |
| NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; |
| request.HTTPMethod = @"POST"; |
| - NSURLResponse *response = nil; |
| - NSError *error = nil; |
| + |
| + RTCLog(@"C->RS: BYE"); |
| + __block NSError *error = nil; |
| + |
| // We want a synchronous request so that we know that we've left the room on |
| // room server before we do any further work. |
| - RTCLog(@"C->RS: BYE"); |
| - [NSURLConnection sendSynchronousRequest:request |
| - returningResponse:&response |
| - error:&error]; |
| + dispatch_semaphore_t sem = dispatch_semaphore_create(0); |
|
magjed_webrtc
2017/03/29 20:03:46
Maybe use rtc::Event instead?
kthelgason
2017/03/30 08:58:53
This is a pure ObjC file, and I'd prefer to keep i
magjed_webrtc
2017/03/30 11:19:46
Acknowledged.
|
| + [NSURLConnection sendAsyncRequest:request |
| + completionHandler:^(NSURLResponse *response, NSData *data, NSError *e) { |
| + if (e) { |
| + error = e; |
| + } |
| + dispatch_semaphore_signal(sem); |
| + }]; |
| + |
| + dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); |
| if (error) { |
| - RTCLogError(@"Error leaving room %@ on room server: %@", |
| - roomId, error.localizedDescription); |
| + RTCLogError(@"Error leaving room %@ on room server: %@", roomId, error.localizedDescription); |
| if (completionHandler) { |
| completionHandler(error); |
| } |