Mike Lewis 13 роки тому
батько
коміт
6133517b90

+ 1 - 1
SRWebSocketTests/SRTAutobahnTests.m

@@ -89,7 +89,7 @@
     
     
     NSOperationQueue *testQueue = [[NSOperationQueue alloc] init];
     NSOperationQueue *testQueue = [[NSOperationQueue alloc] init];
     
     
-    testQueue.maxConcurrentOperationCount = 8;
+    testQueue.maxConcurrentOperationCount = 1;
     
     
     NSString *agent = [NSBundle bundleForClass:[self class]].bundleIdentifier;
     NSString *agent = [NSBundle bundleForClass:[self class]].bundleIdentifier;
     
     

+ 1 - 1
SocketRocket.xcodeproj/project.pbxproj

@@ -152,10 +152,10 @@
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
 				F6BDA808145900D200FE3253 /* Supporting Files */,
 				F6BDA808145900D200FE3253 /* Supporting Files */,
+				F6BDA8151459016900FE3253 /* SRTAutobahnTests.m */,
 				F6BDA810145900D200FE3253 /* SRWebSocketTests-Prefix.pch */,
 				F6BDA810145900D200FE3253 /* SRWebSocketTests-Prefix.pch */,
 				F6AE4526145907D30022AF3C /* SenTestCase+SRTAdditions.h */,
 				F6AE4526145907D30022AF3C /* SenTestCase+SRTAdditions.h */,
 				F6AE4527145907D30022AF3C /* SenTestCase+SRTAdditions.m */,
 				F6AE4527145907D30022AF3C /* SenTestCase+SRTAdditions.m */,
-				F6BDA8151459016900FE3253 /* SRTAutobahnTests.m */,
 				F611322814D4C4F2008A42D5 /* SRTBonjourLocatorOperation.h */,
 				F611322814D4C4F2008A42D5 /* SRTBonjourLocatorOperation.h */,
 				F611322914D4C4F2008A42D5 /* SRTBonjourLocatorOperation.m */,
 				F611322914D4C4F2008A42D5 /* SRTBonjourLocatorOperation.m */,
 				F60CC29F14D4EA0500A005E4 /* SRTWebSocketOperation.h */,
 				F60CC29F14D4EA0500A005E4 /* SRTWebSocketOperation.h */,

+ 20 - 0
SocketRocket.xcodeproj/xcshareddata/xcschemes/SocketRocket.xcscheme

@@ -102,6 +102,26 @@
       debugDocumentVersioning = "YES"
       debugDocumentVersioning = "YES"
       allowLocationSimulation = "YES">
       allowLocationSimulation = "YES">
       <AdditionalOptions>
       <AdditionalOptions>
+         <AdditionalOption
+            key = "MallocScribble"
+            value = ""
+            isEnabled = "YES">
+         </AdditionalOption>
+         <AdditionalOption
+            key = "OBJC_PRINT_EXCEPTIONS"
+            value = "YES"
+            isEnabled = "YES">
+         </AdditionalOption>
+         <AdditionalOption
+            key = "MallocGuardEdges"
+            value = ""
+            isEnabled = "YES">
+         </AdditionalOption>
+         <AdditionalOption
+            key = "NSZombieEnabled"
+            value = "YES"
+            isEnabled = "YES">
+         </AdditionalOption>
       </AdditionalOptions>
       </AdditionalOptions>
    </LaunchAction>
    </LaunchAction>
    <ProfileAction
    <ProfileAction

+ 8 - 7
SocketRocket/SRWebSocket.m

@@ -358,6 +358,8 @@ static __strong NSData *CRLFCRLF;
 {    
 {    
     dispatch_release(_callbackQueue);
     dispatch_release(_callbackQueue);
     dispatch_release(_workQueue);
     dispatch_release(_workQueue);
+    [_inputStream close];
+    [_outputStream close];
     _inputStream.delegate = nil;
     _inputStream.delegate = nil;
     _outputStream.delegate = nil;
     _outputStream.delegate = nil;
 }
 }
@@ -689,17 +691,16 @@ static inline BOOL closeCodeIsValid(int closeCode) {
     
     
     assert(dispatch_get_current_queue() == _workQueue);
     assert(dispatch_get_current_queue() == _workQueue);
     
     
-    dispatch_async(_workQueue, ^{
-        if (self.readyState == SR_OPEN) {
-            [self closeWithCode:1000 reason:reason];
-        }
-        [self _disconnect];
-    });
+    if (self.readyState == SR_OPEN) {
+        [self closeWithCode:1000 reason:reason];
+    }
+    [self _disconnect];
 }
 }
 
 
 - (void)_disconnect;
 - (void)_disconnect;
 {
 {
     SRFastLog(@"Trying to disconnect");
     SRFastLog(@"Trying to disconnect");
+    [_inputStream removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
     dispatch_async(_workQueue, ^{
     dispatch_async(_workQueue, ^{
         _closeWhenFinishedWriting = YES;
         _closeWhenFinishedWriting = YES;
         [self _pumpWriting];
         [self _pumpWriting];
@@ -1226,7 +1227,7 @@ static const size_t SRFrameHeaderOverhead = 32;
         }
         }
             
             
         case NSStreamEventErrorOccurred: {
         case NSStreamEventErrorOccurred: {
-            SRFastLog(@"NSStreamEventErrorOccurred %@ %@", aStream, [aStream streamError]);
+            SRFastLog(@"NSStreamEventErrorOccurred %@ %@", aStream, [[aStream streamError] copy]);
             /// TODO specify error better!
             /// TODO specify error better!
             [self _failWithError:aStream.streamError];
             [self _failWithError:aStream.streamError];
             _readBufferOffset = 0;
             _readBufferOffset = 0;