diff --git a/AUTHORS b/AUTHORS index 691601652..d9bb54d55 100644 --- a/AUTHORS +++ b/AUTHORS @@ -3,6 +3,7 @@ Anil Kumar Ben Strong +Bridger Maxwell Christophe Dumez Eric Rescorla, RTFM Inc. Jie Mao diff --git a/talk/examples/ios/AppRTCDemo/APPRTCAppClient.m b/talk/examples/ios/AppRTCDemo/APPRTCAppClient.m index 9ac83ffc1..9ef0a7a74 100644 --- a/talk/examples/ios/AppRTCDemo/APPRTCAppClient.m +++ b/talk/examples/ios/AppRTCDemo/APPRTCAppClient.m @@ -56,7 +56,8 @@ if (self = [super init]) { _ICEServerDelegate = delegate; _messageHandler = handler; - _backgroundQueue = dispatch_queue_create("RTCBackgroundQueue", NULL); + _backgroundQueue = dispatch_queue_create("RTCBackgroundQueue", + DISPATCH_QUEUE_SERIAL); _sendQueue = [NSMutableArray array]; // Uncomment to see Request/Response logging. // _verboseLogging = YES; @@ -72,11 +73,22 @@ } - (void)sendData:(NSData*)data { - @synchronized(self) { - [self maybeLogMessage:@"Send message"]; + [self maybeLogMessage:@"Send message"]; + + dispatch_async(self.backgroundQueue, ^{ [self.sendQueue addObject:[data copy]]; - } - [self requestQueueDrainInBackground]; + + if ([self.postMessageUrl length] < 1) { + return; + } + for (NSData* data in self.sendQueue) { + NSString* url = + [NSString stringWithFormat:@"%@/%@", + self.baseURL, self.postMessageUrl]; + [self sendData:data withUrl:url]; + } + [self.sendQueue removeAllObjects]; + }); } #pragma mark - Internal methods @@ -133,24 +145,6 @@ } } -- (void)requestQueueDrainInBackground { - dispatch_async(self.backgroundQueue, ^(void) { - // TODO(hughv): This can block the UI thread. Fix. - @synchronized(self) { - if ([self.postMessageUrl length] < 1) { - return; - } - for (NSData* data in self.sendQueue) { - NSString* url = - [NSString stringWithFormat:@"%@/%@", - self.baseURL, self.postMessageUrl]; - [self sendData:data withUrl:url]; - } - [self.sendQueue removeAllObjects]; - } - }); -} - - (void)sendData:(NSData*)data withUrl:(NSString*)url { NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];