TLS fixups

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@38015 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 2014-07-25 12:06:34 +00:00
parent 7d9d513a12
commit 56465e049b
5 changed files with 148 additions and 48 deletions

View file

@ -628,38 +628,48 @@ static NSArray *keys = nil;
case NSStreamEventHasSpaceAvailable:
case NSStreamEventHasBytesAvailable:
case NSStreamEventOpenCompleted:
[self hello]; /* try to complete the handshake */
if (handshake == NO)
{
NSDebugMLLog(@"NSStream",
@"GSTLSHandler completed on %p", stream);
if ([istream streamStatus] == NSStreamStatusOpen)
{
[istream _resetEvents: NSStreamEventOpenCompleted];
[istream _sendEvent: NSStreamEventOpenCompleted];
}
else
{
[istream _resetEvents: NSStreamEventErrorOccurred];
[istream _sendEvent: NSStreamEventErrorOccurred];
}
if ([ostream streamStatus] == NSStreamStatusOpen)
{
[ostream _resetEvents: NSStreamEventOpenCompleted
| NSStreamEventHasSpaceAvailable];
[ostream _sendEvent: NSStreamEventOpenCompleted];
[ostream _sendEvent: NSStreamEventHasSpaceAvailable];
}
else
{
[ostream _resetEvents: NSStreamEventErrorOccurred];
[ostream _sendEvent: NSStreamEventErrorOccurred];
}
}
/* try to complete the handshake.
*/
[self hello];
break;
case NSStreamEventErrorOccurred:
case NSStreamEventEndEncountered:
/* stream error or close ... handshake fails.
*/
handshake = NO;
break;
default:
break;
}
if (NO == handshake)
{
NSDebugMLLog(@"NSStream",
@"GSTLSHandler completed on %p", stream);
if ([istream streamStatus] == NSStreamStatusOpen)
{
[istream _resetEvents: NSStreamEventOpenCompleted];
[istream _sendEvent: NSStreamEventOpenCompleted];
}
else
{
[istream _resetEvents: NSStreamEventErrorOccurred];
[istream _sendEvent: NSStreamEventErrorOccurred];
}
if ([ostream streamStatus] == NSStreamStatusOpen)
{
[ostream _resetEvents: NSStreamEventOpenCompleted
| NSStreamEventHasSpaceAvailable];
[ostream _sendEvent: NSStreamEventOpenCompleted];
[ostream _sendEvent: NSStreamEventHasSpaceAvailable];
}
else
{
[ostream _resetEvents: NSStreamEventErrorOccurred];
[ostream _sendEvent: NSStreamEventErrorOccurred];
}
}
}
}

View file

@ -57,6 +57,10 @@ NSString * const GSTLSVerify = @"GSTLSVerify";
static NSString *
standardizedPath(NSString *path)
{
if (0 == [path length])
{
return nil; // Not a path
}
if (NO == [path isAbsolutePath])
{
path = [[[NSFileManager defaultManager] currentDirectoryPath]
@ -188,9 +192,9 @@ static NSMutableDictionary *fileMap = nil;
* GS_TLS_CA_FILE environment variable.
*/
str = [[NSUserDefaults standardUserDefaults] stringForKey: GSTLSCAFile];
str = standardizedPath(str);
if (nil != str)
{
str = standardizedPath(str);
ASSIGN(caFile, str);
}
@ -198,9 +202,9 @@ static NSMutableDictionary *fileMap = nil;
* GS_TLS_REVOKE environment variable.
*/
str = [[NSUserDefaults standardUserDefaults] stringForKey: GSTLSRevokeFile];
str = standardizedPath(str);
if (nil != str)
{
str = standardizedPath(str);
ASSIGN(revokeFile, str);
}
@ -1133,7 +1137,7 @@ static NSMutableDictionary *credentialsCache = nil;
path, GNUTLS_X509_FMT_PEM);
if (ret < 0)
{
NSLog(@"Problem loading revocation list from %@: %s",
NSLog(@"Problem loading default revocation list from %@: %s",
drv, gnutls_strerror(ret));
}
else

View file

@ -150,11 +150,7 @@ readContentsOfFile(NSString* path, void** buf, off_t* len, NSZone* zone)
FILE *theFile = 0;
void *tmp = 0;
int c;
#if defined(__MINGW__)
long fileLength;
#else
off_t fileLength;
#endif
#if defined(__MINGW__)
thePath = (const unichar*)[path fileSystemRepresentation];
@ -182,11 +178,7 @@ readContentsOfFile(NSString* path, void** buf, off_t* len, NSZone* zone)
/*
* Seek to the end of the file.
*/
#if defined(__MINGW__)
c = fseek(theFile, 0L, SEEK_END);
#else
c = fseeko(theFile, 0, SEEK_END);
#endif
if (c != 0)
{
NSWarnFLog(@"Seek to end of file (%@) failed - %@", path,
@ -198,13 +190,8 @@ readContentsOfFile(NSString* path, void** buf, off_t* len, NSZone* zone)
* Determine the length of the file (having seeked to the end of the
* file) by calling ftello().
*/
#if defined(__MINGW__)
fileLength = ftell(theFile);
if (fileLength == -1)
#else
fileLength = ftello(theFile);
if (fileLength == (off_t) -1)
#endif
{
NSWarnFLog(@"Ftell on %@ failed - %@", path, [NSError _last]);
goto failure;
@ -214,11 +201,7 @@ readContentsOfFile(NSString* path, void** buf, off_t* len, NSZone* zone)
* Rewind the file pointer to the beginning, preparing to read in
* the file.
*/
#if defined(__MINGW__)
c = fseek(theFile, 0L, SEEK_SET);
#else
c = fseeko(theFile, 0, SEEK_SET);
#endif
if (c != 0)
{
NSWarnFLog(@"Fseek to start of file (%@) failed - %@", path,