From e313c0702030dabc82383faf88188945f898c656 Mon Sep 17 00:00:00 2001 From: Artem Titov Date: Tue, 20 Apr 2021 12:10:08 +0200 Subject: [PATCH] Fix iOS compilation for chromium roll MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix: FAILED: obj/examples/socketrocket/SRWebSocket.o error: block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior [-Werror,-Wimplicit-retain-self] Bug: None Change-Id: I55e6c8ebf81d80669308d9249d42dd158b9a09dd Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215682 Reviewed-by: Mirko Bonadei Reviewed-by: Peter Hanspers Reviewed-by: Kári Helgason Commit-Queue: Artem Titov Cr-Commit-Position: refs/heads/master@{#33792} --- .../third_party/SocketRocket/SRWebSocket.m | 147 ++++++++++-------- 1 file changed, 79 insertions(+), 68 deletions(-) diff --git a/examples/objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.m b/examples/objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.m index 45f783feb3..60f670544a 100644 --- a/examples/objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.m +++ b/examples/objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.m @@ -482,16 +482,17 @@ static __strong NSData *CRLFCRLF; if (_receivedHTTPHeaders == NULL) { _receivedHTTPHeaders = CFHTTPMessageCreateEmpty(NULL, NO); } - - [self _readUntilHeaderCompleteWithCallback:^(SRWebSocket *self, NSData *data) { - CFHTTPMessageAppendBytes(_receivedHTTPHeaders, (const UInt8 *)data.bytes, data.length); - - if (CFHTTPMessageIsHeaderComplete(_receivedHTTPHeaders)) { - SRFastLog(@"Finished reading headers %@", CFBridgingRelease(CFHTTPMessageCopyAllHeaderFields(_receivedHTTPHeaders))); - [self _HTTPHeadersDidFinish]; - } else { - [self _readHTTPHeader]; - } + + [self _readUntilHeaderCompleteWithCallback:^(SRWebSocket *self, NSData *data) { + CFHTTPMessageAppendBytes(self->_receivedHTTPHeaders, (const UInt8 *)data.bytes, data.length); + + if (CFHTTPMessageIsHeaderComplete(self->_receivedHTTPHeaders)) { + SRFastLog(@"Finished reading headers %@", + CFBridgingRelease(CFHTTPMessageCopyAllHeaderFields(self->_receivedHTTPHeaders))); + [self _HTTPHeadersDidFinish]; + } else { + [self _readHTTPHeader]; + } }]; } @@ -665,8 +666,8 @@ static __strong NSData *CRLFCRLF; // Need to shunt this on the _callbackQueue first to see if they received any messages [self _performDelegateBlock:^{ [self closeWithCode:SRStatusCodeProtocolError reason:message]; - dispatch_async(_workQueue, ^{ - [self _disconnect]; + dispatch_async(self->_workQueue, ^{ + [self _disconnect]; }); }]; } @@ -675,19 +676,19 @@ static __strong NSData *CRLFCRLF; { dispatch_async(_workQueue, ^{ if (self.readyState != SR_CLOSED) { - _failed = YES; - [self _performDelegateBlock:^{ - if ([self.delegate respondsToSelector:@selector(webSocket:didFailWithError:)]) { - [self.delegate webSocket:self didFailWithError:error]; - } - }]; + self->_failed = YES; + [self _performDelegateBlock:^{ + if ([self.delegate respondsToSelector:@selector(webSocket:didFailWithError:)]) { + [self.delegate webSocket:self didFailWithError:error]; + } + }]; - self.readyState = SR_CLOSED; - _selfRetain = nil; + self.readyState = SR_CLOSED; + self->_selfRetain = nil; - SRFastLog(@"Failing with error %@", error.localizedDescription); - - [self _disconnect]; + SRFastLog(@"Failing with error %@", error.localizedDescription); + + [self _disconnect]; } }); } @@ -735,9 +736,9 @@ static __strong NSData *CRLFCRLF; { // Need to pingpong this off _callbackQueue first to make sure messages happen in order [self _performDelegateBlock:^{ - dispatch_async(_workQueue, ^{ - [self _sendFrameWithOpcode:SROpCodePong data:pingData]; - }); + dispatch_async(self->_workQueue, ^{ + [self _sendFrameWithOpcode:SROpCodePong data:pingData]; + }); }]; } @@ -1013,9 +1014,9 @@ static const uint8_t SRPayloadLenMask = 0x7F; if (header.masked) { [self _closeWithProtocolError:@"Client must receive unmasked data"]; } - - size_t extra_bytes_needed = header.masked ? sizeof(_currentReadMaskKey) : 0; - + + size_t extra_bytes_needed = header.masked ? sizeof(self->_currentReadMaskKey) : 0; + if (header.payload_length == 126) { extra_bytes_needed += sizeof(uint16_t); } else if (header.payload_length == 127) { @@ -1045,8 +1046,10 @@ static const uint8_t SRPayloadLenMask = 0x7F; if (header.masked) { - assert(mapped_size >= sizeof(_currentReadMaskOffset) + offset); - memcpy(self->_currentReadMaskKey, ((uint8_t *)mapped_buffer) + offset, sizeof(self->_currentReadMaskKey)); + assert(mapped_size >= sizeof(self->_currentReadMaskOffset) + offset); + memcpy(self->_currentReadMaskKey, + ((uint8_t *)mapped_buffer) + offset, + sizeof(self->_currentReadMaskKey)); } [self _handleFrameHeader:header curData:self->_currentFrameData]; @@ -1057,16 +1060,16 @@ static const uint8_t SRPayloadLenMask = 0x7F; - (void)_readFrameNew; { - dispatch_async(_workQueue, ^{ - [_currentFrameData setLength:0]; - - _currentFrameOpcode = 0; - _currentFrameCount = 0; - _readOpCount = 0; - _currentStringScanPosition = 0; - - [self _readFrameContinue]; - }); + dispatch_async(_workQueue, ^{ + [self->_currentFrameData setLength:0]; + + self->_currentFrameOpcode = 0; + self->_currentFrameCount = 0; + self->_readOpCount = 0; + self->_currentStringScanPosition = 0; + + [self _readFrameContinue]; + }); } - (void)_pumpWriting; @@ -1107,7 +1110,10 @@ static const uint8_t SRPayloadLenMask = 0x7F; if (!_failed) { [self _performDelegateBlock:^{ if ([self.delegate respondsToSelector:@selector(webSocket:didCloseWithCode:reason:wasClean:)]) { - [self.delegate webSocket:self didCloseWithCode:_closeCode reason:_closeReason wasClean:YES]; + [self.delegate webSocket:self + didCloseWithCode:self->_closeCode + reason:self->_closeReason + wasClean:YES]; } }]; } @@ -1420,10 +1426,10 @@ static const size_t SRFrameHeaderOverhead = 32; if (self.readyState >= SR_CLOSING) { return; } - assert(_readBuffer); - - if (self.readyState == SR_CONNECTING && aStream == _inputStream) { - [self didConnect]; + assert(self->_readBuffer); + + if (self.readyState == SR_CONNECTING && aStream == self->_inputStream) { + [self didConnect]; } [self _pumpWriting]; [self _pumpScanner]; @@ -1434,8 +1440,8 @@ static const size_t SRFrameHeaderOverhead = 32; SRFastLog(@"NSStreamEventErrorOccurred %@ %@", aStream, [[aStream streamError] copy]); /// TODO specify error better! [self _failWithError:aStream.streamError]; - _readBufferOffset = 0; - [_readBuffer setLength:0]; + self->_readBufferOffset = 0; + [self->_readBuffer setLength:0]; break; } @@ -1448,17 +1454,22 @@ static const size_t SRFrameHeaderOverhead = 32; } else { if (self.readyState != SR_CLOSED) { self.readyState = SR_CLOSED; - _selfRetain = nil; + self->_selfRetain = nil; } - if (!_sentClose && !_failed) { - _sentClose = YES; - // If we get closed in this state it's probably not clean because we should be sending this when we send messages - [self _performDelegateBlock:^{ + if (!self->_sentClose && !self->_failed) { + self->_sentClose = YES; + // If we get closed in this state it's probably not clean because we should be + // sending this when we send messages + [self + _performDelegateBlock:^{ if ([self.delegate respondsToSelector:@selector(webSocket:didCloseWithCode:reason:wasClean:)]) { - [self.delegate webSocket:self didCloseWithCode:SRStatusCodeGoingAway reason:@"Stream end encountered" wasClean:NO]; + [self.delegate webSocket:self + didCloseWithCode:SRStatusCodeGoingAway + reason:@"Stream end encountered" + wasClean:NO]; } - }]; + }]; } } @@ -1469,19 +1480,19 @@ static const size_t SRFrameHeaderOverhead = 32; SRFastLog(@"NSStreamEventHasBytesAvailable %@", aStream); const int bufferSize = 2048; uint8_t buffer[bufferSize]; - - while (_inputStream.hasBytesAvailable) { - NSInteger bytes_read = [_inputStream read:buffer maxLength:bufferSize]; - - if (bytes_read > 0) { - [_readBuffer appendBytes:buffer length:bytes_read]; - } else if (bytes_read < 0) { - [self _failWithError:_inputStream.streamError]; - } - - if (bytes_read != bufferSize) { - break; - } + + while (self->_inputStream.hasBytesAvailable) { + NSInteger bytes_read = [self->_inputStream read:buffer maxLength:bufferSize]; + + if (bytes_read > 0) { + [self->_readBuffer appendBytes:buffer length:bytes_read]; + } else if (bytes_read < 0) { + [self _failWithError:_inputStream.streamError]; + } + + if (bytes_read != bufferSize) { + break; + } }; [self _pumpScanner]; break;