|
@@ -178,33 +178,6 @@ typedef void (^data_callback)(SRWebSocket *webSocket, NSData *data);
|
|
|
|
|
|
@interface SRWebSocket () <NSStreamDelegate>
|
|
|
|
|
|
-- (void)_writeData:(NSData *)data;
|
|
|
-- (void)_closeWithProtocolError:(NSString *)message;
|
|
|
-- (void)_failWithError:(NSError *)error;
|
|
|
-
|
|
|
-- (void)_disconnect;
|
|
|
-
|
|
|
-- (void)_readFrameNew;
|
|
|
-- (void)_readFrameContinue;
|
|
|
-
|
|
|
-- (void)_pumpScanner;
|
|
|
-
|
|
|
-- (void)_pumpWriting;
|
|
|
-
|
|
|
-- (void)_addConsumerWithScanner:(stream_scanner)consumer callback:(data_callback)callback;
|
|
|
-- (void)_addConsumerWithDataLength:(size_t)dataLength callback:(data_callback)callback readToCurrentFrame:(BOOL)readToCurrentFrame unmaskBytes:(BOOL)unmaskBytes;
|
|
|
-- (void)_addConsumerWithScanner:(stream_scanner)consumer callback:(data_callback)callback dataLength:(size_t)dataLength;
|
|
|
-- (void)_readUntilBytes:(const void *)bytes length:(size_t)length callback:(data_callback)dataHandler;
|
|
|
-- (void)_readUntilHeaderCompleteWithCallback:(data_callback)dataHandler;
|
|
|
-
|
|
|
-- (void)_sendFrameWithOpcode:(SROpCode)opcode data:(id)data;
|
|
|
-
|
|
|
-- (BOOL)_checkHandshake:(CFHTTPMessageRef)httpMessage;
|
|
|
-- (void)_SR_commonInit;
|
|
|
-
|
|
|
-- (void)_initializeStreams;
|
|
|
-- (void)_connect;
|
|
|
-
|
|
|
@property (nonatomic) SRReadyState readyState;
|
|
|
|
|
|
@property (nonatomic) NSOperationQueue *delegateOperationQueue;
|
|
@@ -399,7 +372,7 @@ static __strong NSData *CRLFCRLF;
|
|
|
|
|
|
_selfRetain = self;
|
|
|
|
|
|
- [self _connect];
|
|
|
+ [self _openConnection];
|
|
|
}
|
|
|
|
|
|
// Calls block on delegate queue
|
|
@@ -588,7 +561,7 @@ static __strong NSData *CRLFCRLF;
|
|
|
_outputStream.delegate = self;
|
|
|
}
|
|
|
|
|
|
-- (void)_connect;
|
|
|
+- (void)_openConnection;
|
|
|
{
|
|
|
if (!_scheduledRunloops.count) {
|
|
|
[self scheduleInRunLoop:[NSRunLoop SR_networkRunLoop] forMode:NSDefaultRunLoopMode];
|
|
@@ -635,7 +608,7 @@ static __strong NSData *CRLFCRLF;
|
|
|
SRFastLog(@"Closing with code %d reason %@", code, reason);
|
|
|
|
|
|
if (wasConnecting) {
|
|
|
- [self _disconnect];
|
|
|
+ [self _closeConnection];
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -672,7 +645,7 @@ static __strong NSData *CRLFCRLF;
|
|
|
[self _performDelegateBlock:^{
|
|
|
[self closeWithCode:SRStatusCodeProtocolError reason:message];
|
|
|
dispatch_async(_workQueue, ^{
|
|
|
- [self _disconnect];
|
|
|
+ [self _closeConnection];
|
|
|
});
|
|
|
}];
|
|
|
}
|
|
@@ -693,7 +666,7 @@ static __strong NSData *CRLFCRLF;
|
|
|
|
|
|
SRFastLog(@"Failing with error %@", error.localizedDescription);
|
|
|
|
|
|
- [self _disconnect];
|
|
|
+ [self _closeConnection];
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -835,11 +808,11 @@ static inline BOOL closeCodeIsValid(int closeCode) {
|
|
|
[self closeWithCode:1000 reason:nil];
|
|
|
}
|
|
|
dispatch_async(_workQueue, ^{
|
|
|
- [self _disconnect];
|
|
|
+ [self _closeConnection];
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-- (void)_disconnect;
|
|
|
+- (void)_closeConnection;
|
|
|
{
|
|
|
[self assertOnWorkQueue];
|
|
|
SRFastLog(@"Trying to disconnect");
|
|
@@ -866,7 +839,7 @@ static inline BOOL closeCodeIsValid(int closeCode) {
|
|
|
if (str == nil && frameData) {
|
|
|
[self closeWithCode:SRStatusCodeInvalidUTF8 reason:@"Text frames must be valid UTF-8"];
|
|
|
dispatch_async(_workQueue, ^{
|
|
|
- [self _disconnect];
|
|
|
+ [self _closeConnection];
|
|
|
});
|
|
|
|
|
|
return;
|
|
@@ -1257,7 +1230,7 @@ static const char CRLFCRLFBytes[] = {'\r', '\n', '\r', '\n'};
|
|
|
if (valid_utf8_size == -1) {
|
|
|
[self closeWithCode:SRStatusCodeInvalidUTF8 reason:@"Text frames must be valid UTF-8"];
|
|
|
dispatch_async(_workQueue, ^{
|
|
|
- [self _disconnect];
|
|
|
+ [self _closeConnection];
|
|
|
});
|
|
|
return didWork;
|
|
|
} else {
|