Monotone-Parent: f845aee937de02ccc5aaec9e4f9592ddeea27abf
Monotone-Revision: 4e07b3d1e8330e5242ff10554013fd21551394d5 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2009-03-20T20:35:39 Monotone-Branch: ca.inverse.sogomaint-2.0.2
parent
c40475ab77
commit
59808b74b5
|
@ -6,6 +6,8 @@
|
|||
valid. This fixes a crash because the channel, already
|
||||
autoreleased, would be later released again by the caller (through
|
||||
releaseChannel:).
|
||||
([GCSChannelManager -releaseChannel:_channel]): ensure the channel
|
||||
is closed if we need to release it.
|
||||
|
||||
2009-03-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
|
|
|
@ -379,6 +379,7 @@ static NSTimeInterval ChannelCollectionTimer = 5 * 60;
|
|||
- (void) releaseChannel: (EOAdaptorChannel *) _channel
|
||||
{
|
||||
GCSChannelHandle *handle;
|
||||
BOOL keepOpen;
|
||||
|
||||
#if defined(THREADSAFE)
|
||||
[channelLock lock];
|
||||
|
@ -391,8 +392,10 @@ static NSTimeInterval ChannelCollectionTimer = 5 * 60;
|
|||
ASSIGN (handle->lastReleaseTime, [NSCalendarDate date]);
|
||||
[busyChannels removeObject: handle];
|
||||
|
||||
keepOpen = NO;
|
||||
if ([_channel isOpen] && [handle age] < ChannelExpireAge)
|
||||
{
|
||||
keepOpen = YES;
|
||||
// TODO: consider age
|
||||
[availableChannels addObject: handle];
|
||||
if (debugPools)
|
||||
|
@ -404,9 +407,13 @@ static NSTimeInterval ChannelCollectionTimer = 5 * 60;
|
|||
_channel];
|
||||
}
|
||||
else if (debugPools)
|
||||
[self logWithFormat:
|
||||
@"DBPOOL: freeing old channel (age %ds, %p) ", (int)
|
||||
[handle age], _channel];
|
||||
{
|
||||
[self logWithFormat:
|
||||
@"DBPOOL: freeing old channel (age %ds, %p) ", (int)
|
||||
[handle age], _channel];
|
||||
}
|
||||
if (!keepOpen && [_channel isOpen])
|
||||
[_channel closeChannel];
|
||||
[handle release];
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue