diff options
author | Benoit Foucher <benoit@zeroc.com> | 2017-04-28 17:30:17 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2017-04-28 17:30:17 +0200 |
commit | 8c87a17030ec21ff968f3ec7c44ba844e5afdaaf (patch) | |
tree | 0d896cd16f4e50e83615b971522674b1f07c28d1 /cpp | |
parent | Fixed ICE-7841 - IceStorm/stress failure (diff) | |
download | ice-8c87a17030ec21ff968f3ec7c44ba844e5afdaaf.tar.bz2 ice-8c87a17030ec21ff968f3ec7c44ba844e5afdaaf.tar.xz ice-8c87a17030ec21ff968f3ec7c44ba844e5afdaaf.zip |
Fixed ICE-7843 - Check NSStreamStatusAtEnd in iOS transports
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/src/Ice/ios/StreamTransceiver.cpp | 85 | ||||
-rw-r--r-- | cpp/src/Ice/ios/StreamTransceiver.h | 2 | ||||
-rw-r--r-- | cpp/src/IceIAP/Transceiver.h | 2 | ||||
-rw-r--r-- | cpp/src/IceIAP/Transceiver.mm | 69 | ||||
-rw-r--r-- | cpp/test/ios/controller/Bundle/ControllerI.mm | 1 | ||||
-rw-r--r-- | cpp/test/ios/controller/C++ Test Controller.xcodeproj/project.pbxproj | 12 |
6 files changed, 68 insertions, 103 deletions
diff --git a/cpp/src/Ice/ios/StreamTransceiver.cpp b/cpp/src/Ice/ios/StreamTransceiver.cpp index 06796d70480..cbdde8e25ab 100644 --- a/cpp/src/Ice/ios/StreamTransceiver.cpp +++ b/cpp/src/Ice/ios/StreamTransceiver.cpp @@ -240,16 +240,7 @@ IceObjC::StreamTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer) { if(_error) { - UniqueRef<CFErrorRef> err; - if(CFWriteStreamGetStatus(_writeStream.get()) == kCFStreamStatusError) - { - err.reset(CFWriteStreamCopyError(_writeStream.get())); - } - else if(CFReadStreamGetStatus(_readStream.get()) == kCFStreamStatusError) - { - err.reset(CFReadStreamCopyError(_readStream.get())); - } - checkError(err.get(), __FILE__, __LINE__); + checkErrorStatus(_writeStream.get(), _readStream.get(), __FILE__, __LINE__); } _state = StateConnected; @@ -327,13 +318,10 @@ IceObjC::StreamTransceiver::write(Buffer& buf) IceUtil::Mutex::Lock sync(_mutex); if(_error) { - assert(CFWriteStreamGetStatus(_writeStream.get()) == kCFStreamStatusError); - UniqueRef<CFErrorRef> err(CFWriteStreamCopyError(_writeStream.get())); - checkError(err.get(), __FILE__, __LINE__); + checkErrorStatus(_writeStream.get(), 0, __FILE__, __LINE__); } - // Its impossible for the packetSize to be more than an Int. - size_t packetSize = static_cast<size_t>(buf.b.end() - buf.i); + size_t packetSize = buf.b.end() - buf.i; while(buf.i != buf.b.end()) { if(!CFWriteStreamCanAcceptBytes(_writeStream.get())) @@ -346,16 +334,7 @@ IceObjC::StreamTransceiver::write(Buffer& buf) if(ret == SOCKET_ERROR) { - if(CFWriteStreamGetStatus(_writeStream.get()) == kCFStreamStatusAtEnd) - { - ConnectionLostException ex(__FILE__, __LINE__); - ex.error = getSocketErrno(); - throw ex; - } - - assert(CFWriteStreamGetStatus(_writeStream.get()) == kCFStreamStatusError); - UniqueRef<CFErrorRef> err(CFWriteStreamCopyError(_writeStream.get())); - checkError(err.get(), __FILE__, __LINE__); + checkErrorStatus(_writeStream.get(), 0, __FILE__, __LINE__); if(noBuffers() && packetSize > 1024) { packetSize /= 2; @@ -367,7 +346,7 @@ IceObjC::StreamTransceiver::write(Buffer& buf) if(packetSize > buf.b.end() - buf.i) { - packetSize = static_cast<int>(buf.b.end() - buf.i); + packetSize = buf.b.end() - buf.i; } } return SocketOperationNone; @@ -379,13 +358,10 @@ IceObjC::StreamTransceiver::read(Buffer& buf) IceUtil::Mutex::Lock sync(_mutex); if(_error) { - assert(CFReadStreamGetStatus(_readStream.get()) == kCFStreamStatusError); - UniqueRef<CFErrorRef> err(CFReadStreamCopyError(_readStream.get())); - checkError(err.get(), __FILE__, __LINE__); + checkErrorStatus(0, _readStream.get(), __FILE__, __LINE__); } - // Its impossible for the packetSize to be more than an Int. - size_t packetSize = static_cast<size_t>(buf.b.end() - buf.i); + size_t packetSize = buf.b.end() - buf.i; while(buf.i != buf.b.end()) { if(!CFReadStreamHasBytesAvailable(_readStream.get())) @@ -405,16 +381,7 @@ IceObjC::StreamTransceiver::read(Buffer& buf) if(ret == SOCKET_ERROR) { - if(CFReadStreamGetStatus(_readStream.get()) == kCFStreamStatusAtEnd) - { - ConnectionLostException ex(__FILE__, __LINE__); - ex.error = getSocketErrno(); - throw ex; - } - - assert(CFReadStreamGetStatus(_readStream.get()) == kCFStreamStatusError); - UniqueRef<CFErrorRef> err(CFReadStreamCopyError(_readStream.get())); - checkError(err.get(), __FILE__, __LINE__); + checkErrorStatus(0, _readStream.get(), __FILE__, __LINE__); if(noBuffers() && packetSize > 1024) { packetSize /= 2; @@ -426,7 +393,7 @@ IceObjC::StreamTransceiver::read(Buffer& buf) if(packetSize > buf.b.end() - buf.i) { - packetSize = static_cast<int>(buf.b.end() - buf.i); + packetSize = buf.b.end() - buf.i; } } @@ -524,19 +491,35 @@ IceObjC::StreamTransceiver::~StreamTransceiver() } void -IceObjC::StreamTransceiver::checkError(CFErrorRef err, const char* file, int line) +IceObjC::StreamTransceiver::checkErrorStatus(CFWriteStreamRef writeStream, CFReadStreamRef readStream, + const char* file, int line) { - assert(err); - CFStringRef domain = CFErrorGetDomain(err); + if((writeStream && (CFWriteStreamGetStatus(writeStream) == kCFStreamStatusAtEnd)) || + (readStream && (CFReadStreamGetStatus(readStream) == kCFStreamStatusAtEnd))) + { + throw ConnectionLostException(file, line); + } + + UniqueRef<CFErrorRef> err; + if(writeStream && CFWriteStreamGetStatus(writeStream) == kCFStreamStatusError) + { + err.reset(CFWriteStreamCopyError(writeStream)); + } + else if(readStream && CFReadStreamGetStatus(readStream) == kCFStreamStatusError) + { + err.reset(CFReadStreamCopyError(readStream)); + } + + assert(err.get()); + CFStringRef domain = CFErrorGetDomain(err.get()); if(CFStringCompare(domain, kCFErrorDomainPOSIX, 0) == kCFCompareEqualTo) { - errno = CFErrorGetCode(err); + errno = CFErrorGetCode(err.get()); if(interrupted() || noBuffers()) { return; } - - if(connectionLost()) + else if(connectionLost()) { ConnectionLostException ex(file, line); ex.error = getSocketErrno(); @@ -562,13 +545,13 @@ IceObjC::StreamTransceiver::checkError(CFErrorRef err, const char* file, int lin } } - int error = CFErrorGetCode(err); + int error = CFErrorGetCode(err.get()); if(error == kCFHostErrorHostNotFound || error == kCFHostErrorUnknown) { int rs = 0; if(error == kCFHostErrorUnknown) { - UniqueRef<CFDictionaryRef> dict(CFErrorCopyUserInfo(err)); + UniqueRef<CFDictionaryRef> dict(CFErrorCopyUserInfo(err.get())); CFNumberRef d = static_cast<CFNumberRef>(CFDictionaryGetValue(dict.get(), kCFGetAddrInfoFailureKey)); if(d != 0) { @@ -583,6 +566,6 @@ IceObjC::StreamTransceiver::checkError(CFErrorRef err, const char* file, int lin CFNetworkException ex(file, line); ex.domain = fromCFString(domain); - ex.error = CFErrorGetCode(err); + ex.error = CFErrorGetCode(err.get()); throw ex; } diff --git a/cpp/src/Ice/ios/StreamTransceiver.h b/cpp/src/Ice/ios/StreamTransceiver.h index 478691a554a..c7c6621c686 100644 --- a/cpp/src/Ice/ios/StreamTransceiver.h +++ b/cpp/src/Ice/ios/StreamTransceiver.h @@ -69,7 +69,7 @@ public: private: - void checkError(CFErrorRef, const char*, int); + void checkErrorStatus(CFWriteStreamRef, CFReadStreamRef, const char*, int); const InstancePtr _instance; const std::string _host; diff --git a/cpp/src/IceIAP/Transceiver.h b/cpp/src/IceIAP/Transceiver.h index 61300b61c44..2fa47f41d7c 100644 --- a/cpp/src/IceIAP/Transceiver.h +++ b/cpp/src/IceIAP/Transceiver.h @@ -60,7 +60,7 @@ public: private: - void checkError(NSError*, const char*, int); + void checkErrorStatus(NSStream*, const char*, int); IceInternal::ProtocolInstancePtr _instance; EASession* _session; diff --git a/cpp/src/IceIAP/Transceiver.mm b/cpp/src/IceIAP/Transceiver.mm index 2bc30f211a5..68310c83f68 100644 --- a/cpp/src/IceIAP/Transceiver.mm +++ b/cpp/src/IceIAP/Transceiver.mm @@ -236,16 +236,8 @@ IceObjC::iAPTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer) { if(_error) { - NSError* err = nil; - if([_writeStream streamStatus] == NSStreamStatusError) - { - err = [_writeStream streamError]; - } - if([_readStream streamStatus] == NSStreamStatusError) - { - err = [_readStream streamError]; - } - checkError(err, __FILE__, __LINE__); + checkErrorStatus(_writeStream, __FILE__, __LINE__); + checkErrorStatus(_readStream, __FILE__, __LINE__); } _state = StateConnected; } @@ -272,12 +264,10 @@ IceObjC::iAPTransceiver::write(Buffer& buf) IceUtil::Mutex::Lock sync(_mutex); if(_error) { - assert([_writeStream streamStatus] == NSStreamStatusError); - checkError([_writeStream streamError], __FILE__, __LINE__); + checkErrorStatus(_writeStream, __FILE__, __LINE__); } - // Its impossible for the packetSize to be more than an Int. - int packetSize = static_cast<int>(buf.b.end() - buf.i); + size_t packetSize = buf.b.end() - buf.i; while(buf.i != buf.b.end()) { if(![_writeStream hasSpaceAvailable]) @@ -289,15 +279,7 @@ IceObjC::iAPTransceiver::write(Buffer& buf) NSInteger ret = [_writeStream write:reinterpret_cast<const UInt8*>(&*buf.i) maxLength:packetSize]; if(ret == SOCKET_ERROR) { - if([_writeStream streamStatus] == NSStreamStatusAtEnd) - { - ConnectionLostException ex(__FILE__, __LINE__); - ex.error = getSocketErrno(); - throw ex; - } - - assert([_writeStream streamStatus] == NSStreamStatusError); - checkError([_writeStream streamError], __FILE__, __LINE__); + checkErrorStatus(_writeStream, __FILE__, __LINE__); if(noBuffers() && packetSize > 1024) { packetSize /= 2; @@ -309,7 +291,7 @@ IceObjC::iAPTransceiver::write(Buffer& buf) if(packetSize > buf.b.end() - buf.i) { - packetSize = static_cast<int>(buf.b.end() - buf.i); + packetSize = buf.b.end() - buf.i; } } @@ -322,12 +304,10 @@ IceObjC::iAPTransceiver::read(Buffer& buf) IceUtil::Mutex::Lock sync(_mutex); if(_error) { - assert([_readStream streamStatus] == NSStreamStatusError); - checkError([_readStream streamError], __FILE__, __LINE__); + checkErrorStatus(_readStream, __FILE__, __LINE__); } - // Its impossible for the packetSize to be more than an Int. - int packetSize = static_cast<int>(buf.b.end() - buf.i); + size_t packetSize = buf.b.end() - buf.i; while(buf.i != buf.b.end()) { if(![_readStream hasBytesAvailable] && [_readStream streamStatus] != NSStreamStatusError) @@ -339,22 +319,12 @@ IceObjC::iAPTransceiver::read(Buffer& buf) NSInteger ret = [_readStream read:reinterpret_cast<UInt8*>(&*buf.i) maxLength:packetSize]; if(ret == 0) { - ConnectionLostException ex(__FILE__, __LINE__); - ex.error = 0; - throw ex; + throw ConnectionLostException(__FILE__, __LINE__); } if(ret == SOCKET_ERROR) { - if([_readStream streamStatus] == NSStreamStatusAtEnd) - { - ConnectionLostException ex(__FILE__, __LINE__); - ex.error = getSocketErrno(); - throw ex; - } - - assert([_readStream streamStatus] == NSStreamStatusError); - checkError([_readStream streamError], __FILE__, __LINE__); + checkErrorStatus(_readStream, __FILE__, __LINE__); if(noBuffers() && packetSize > 1024) { packetSize /= 2; @@ -366,7 +336,7 @@ IceObjC::iAPTransceiver::read(Buffer& buf) if(packetSize > buf.b.end() - buf.i) { - packetSize = static_cast<int>(buf.b.end() - buf.i); + packetSize = buf.b.end() - buf.i; } } @@ -437,14 +407,27 @@ IceObjC::iAPTransceiver::~iAPTransceiver() } void -IceObjC::iAPTransceiver::checkError(NSError* err, const char* file, int line) +IceObjC::iAPTransceiver::checkErrorStatus(NSStream* stream, const char* file, int line) { + NSStreamStatus status = [stream streamStatus]; + if(status == NSStreamStatusAtEnd) + { + throw ConnectionLostException(file, line); + } + + assert(status == NSStreamStatusError); + + NSError* err = [stream streamError]; NSString* domain = [err domain]; if([domain compare:NSPOSIXErrorDomain] == NSOrderedSame) { errno = [err code]; [err release]; - if(connectionRefused()) + if(interrupted() || noBuffers()) + { + return; + } + else if(connectionRefused()) { ConnectionRefusedException ex(file, line); ex.error = getSocketErrno(); diff --git a/cpp/test/ios/controller/Bundle/ControllerI.mm b/cpp/test/ios/controller/Bundle/ControllerI.mm index 18d20204a3b..309311b946d 100644 --- a/cpp/test/ios/controller/Bundle/ControllerI.mm +++ b/cpp/test/ios/controller/Bundle/ControllerI.mm @@ -354,7 +354,6 @@ ControllerHelper::ControllerHelper(id<ViewController> controller, NSString* ipv4 initData.properties = Ice::createProperties(); initData.properties->setProperty("Ice.ThreadPool.Server.SizeMax", "10"); initData.properties->setProperty("IceDiscovery.DomainId", "TestController"); - initData.properties->setProperty("Ice.Default.Host", [ipv4 UTF8String]); initData.properties->setProperty("ControllerAdapter.Endpoints", "tcp"); //initData.properties->setProperty("Ice.Trace.Network", "2"); //initData.properties->setProperty("Ice.Trace.Protocol", "2"); diff --git a/cpp/test/ios/controller/C++ Test Controller.xcodeproj/project.pbxproj b/cpp/test/ios/controller/C++ Test Controller.xcodeproj/project.pbxproj index ad832226493..755cbb5903b 100644 --- a/cpp/test/ios/controller/C++ Test Controller.xcodeproj/project.pbxproj +++ b/cpp/test/ios/controller/C++ Test Controller.xcodeproj/project.pbxproj @@ -10,12 +10,12 @@ 1419EB451E028A0700352FD7 /* Controller.ice in Resources */ = {isa = PBXBuildFile; fileRef = 1419EB441E028A0700352FD7 /* Controller.ice */; }; 1419EB461E028A3300352FD7 /* Controller.ice in Sources */ = {isa = PBXBuildFile; fileRef = 1419EB441E028A0700352FD7 /* Controller.ice */; }; 1419EB471E028A3A00352FD7 /* Controller.ice in Sources */ = {isa = PBXBuildFile; fileRef = 1419EB441E028A0700352FD7 /* Controller.ice */; }; + 143A09B11EB38CAD00C8F91F /* cacert.pem in Resources */ = {isa = PBXBuildFile; fileRef = 143A09B01EB38CAD00C8F91F /* cacert.pem */; }; 1440D8761E0187BA00CF7ED3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14B70D0F1E0160FD00118DE3 /* UIKit.framework */; }; 1440D8841E0188A600CF7ED3 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1440D8821E0188A600CF7ED3 /* Info.plist */; }; 1440D88A1E0189F300CF7ED3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1440D8891E0189F300CF7ED3 /* Foundation.framework */; }; 1440D88B1E018A2600CF7ED3 /* Cpp11ControllerBundle.bundle in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1440D86C1E0186FF00CF7ED3 /* Cpp11ControllerBundle.bundle */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 1440D88C1E018B0C00CF7ED3 /* ControllerI.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1440D8811E0188A600CF7ED3 /* ControllerI.mm */; }; - 148ABA191DFB12C800594F70 /* cacert.der in Resources */ = {isa = PBXBuildFile; fileRef = 148ABA161DFB12C800594F70 /* cacert.der */; }; 148ABA1A1DFB12C800594F70 /* client.p12 in Resources */ = {isa = PBXBuildFile; fileRef = 148ABA171DFB12C800594F70 /* client.p12 */; }; 148ABA1B1DFB12C800594F70 /* server.p12 in Resources */ = {isa = PBXBuildFile; fileRef = 148ABA181DFB12C800594F70 /* server.p12 */; }; 148ABA1D1DFB12DB00594F70 /* certs in Resources */ = {isa = PBXBuildFile; fileRef = 148ABA1C1DFB12DB00594F70 /* certs */; }; @@ -28,13 +28,13 @@ 148ABA4C1DFEEAEE00594F70 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 14905C601DF98FD8002AE61B /* Assets.xcassets */; }; 148ABA4D1DFEEAEE00594F70 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 14905C5D1DF98FD8002AE61B /* Main.storyboard */; }; 148ABA4E1DFEEAEE00594F70 /* certs in Resources */ = {isa = PBXBuildFile; fileRef = 148ABA1C1DFB12DB00594F70 /* certs */; }; - 148ABA4F1DFEEAEE00594F70 /* cacert.der in Resources */ = {isa = PBXBuildFile; fileRef = 148ABA161DFB12C800594F70 /* cacert.der */; }; 14905C561DF98FD8002AE61B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 14905C551DF98FD8002AE61B /* main.m */; }; 14905C591DF98FD8002AE61B /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 14905C581DF98FD8002AE61B /* AppDelegate.m */; }; 14905C5C1DF98FD8002AE61B /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 14905C5B1DF98FD8002AE61B /* ViewController.m */; }; 14905C5F1DF98FD8002AE61B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 14905C5D1DF98FD8002AE61B /* Main.storyboard */; }; 14905C611DF98FD8002AE61B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 14905C601DF98FD8002AE61B /* Assets.xcassets */; }; 14905C641DF98FD8002AE61B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 14905C621DF98FD8002AE61B /* LaunchScreen.storyboard */; }; + 14C8F6211EB3972D009B4CEC /* cacert.pem in Resources */ = {isa = PBXBuildFile; fileRef = 143A09B01EB38CAD00C8F91F /* cacert.pem */; }; 14E398261E01B14B00A89291 /* ControllerI.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1440D8811E0188A600CF7ED3 /* ControllerI.mm */; }; 14E398291E01B14B00A89291 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14B70D0F1E0160FD00118DE3 /* UIKit.framework */; }; 14E3982B1E01B14B00A89291 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1440D8891E0189F300CF7ED3 /* Foundation.framework */; }; @@ -112,11 +112,11 @@ /* Begin PBXFileReference section */ 1419EB441E028A0700352FD7 /* Controller.ice */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Controller.ice; path = ../../../../../scripts/Controller.ice; sourceTree = "<group>"; }; + 143A09B01EB38CAD00C8F91F /* cacert.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = cacert.pem; path = ../../../../certs/cacert.pem; sourceTree = "<group>"; }; 1440D86C1E0186FF00CF7ED3 /* Cpp11ControllerBundle.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Cpp11ControllerBundle.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 1440D8811E0188A600CF7ED3 /* ControllerI.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ControllerI.mm; path = Bundle/ControllerI.mm; sourceTree = SOURCE_ROOT; }; 1440D8821E0188A600CF7ED3 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Bundle/Info.plist; sourceTree = SOURCE_ROOT; }; 1440D8891E0189F300CF7ED3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 148ABA161DFB12C800594F70 /* cacert.der */ = {isa = PBXFileReference; lastKnownFileType = file; name = cacert.der; path = ../../../../certs/cacert.der; sourceTree = "<group>"; }; 148ABA171DFB12C800594F70 /* client.p12 */ = {isa = PBXFileReference; lastKnownFileType = file; name = client.p12; path = ../../../../certs/client.p12; sourceTree = "<group>"; }; 148ABA181DFB12C800594F70 /* server.p12 */ = {isa = PBXFileReference; lastKnownFileType = file; name = server.p12; path = ../../../../certs/server.p12; sourceTree = "<group>"; }; 148ABA1C1DFB12DB00594F70 /* certs */ = {isa = PBXFileReference; lastKnownFileType = folder; name = certs; path = ../../IceSSL/certs; sourceTree = "<group>"; }; @@ -178,8 +178,8 @@ 148ABA151DFB12A500594F70 /* Resources */ = { isa = PBXGroup; children = ( + 143A09B01EB38CAD00C8F91F /* cacert.pem */, 148ABA1C1DFB12DB00594F70 /* certs */, - 148ABA161DFB12C800594F70 /* cacert.der */, 148ABA171DFB12C800594F70 /* client.p12 */, 148ABA181DFB12C800594F70 /* server.p12 */, ); @@ -393,12 +393,12 @@ buildActionMask = 2147483647; files = ( 148ABA481DFEEAEE00594F70 /* client.p12 in Resources */, + 14C8F6211EB3972D009B4CEC /* cacert.pem in Resources */, 148ABA491DFEEAEE00594F70 /* LaunchScreen.storyboard in Resources */, 148ABA4B1DFEEAEE00594F70 /* server.p12 in Resources */, 148ABA4C1DFEEAEE00594F70 /* Assets.xcassets in Resources */, 148ABA4D1DFEEAEE00594F70 /* Main.storyboard in Resources */, 148ABA4E1DFEEAEE00594F70 /* certs in Resources */, - 148ABA4F1DFEEAEE00594F70 /* cacert.der in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -409,11 +409,11 @@ 148ABA1A1DFB12C800594F70 /* client.p12 in Resources */, 14905C641DF98FD8002AE61B /* LaunchScreen.storyboard in Resources */, 1419EB451E028A0700352FD7 /* Controller.ice in Resources */, + 143A09B11EB38CAD00C8F91F /* cacert.pem in Resources */, 148ABA1B1DFB12C800594F70 /* server.p12 in Resources */, 14905C611DF98FD8002AE61B /* Assets.xcassets in Resources */, 14905C5F1DF98FD8002AE61B /* Main.storyboard in Resources */, 148ABA1D1DFB12DB00594F70 /* certs in Resources */, - 148ABA191DFB12C800594F70 /* cacert.der in Resources */, 1440D8841E0188A600CF7ED3 /* Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; |