Important Update:
- Bug fix: Handle not updated in SelectCore if SelectHandle re-used
This commit is contained in:
@@ -106,16 +106,18 @@ void CSelect::Add( int FD, bool Read, bool Write, THandle * Handle, CSelectableC
|
||||
if (Log) Log->Message( LogLevel, dlHigh, "Selector: FD [%d], %s, %s - Created", FD,
|
||||
ConnectTypeName[((Handle)? Handle->Type : 0)], ((Handle && Handle->Name)? Handle->Name : "") );
|
||||
}
|
||||
else if ((*SelectHandle)->Function != Function) {
|
||||
// Old handle for another function, not yet removed, remove from read/write lists
|
||||
Remove( FD, true, true );
|
||||
else {
|
||||
if ((*SelectHandle)->Function != Function) {
|
||||
// Old handle for another function, not yet removed, remove from read/write lists
|
||||
Remove( FD, true, true );
|
||||
|
||||
if (Log) Log->Message( LogLevel, dlHigh, "Selector: FD [%d], %s, %s - Removed old", FD,
|
||||
ConnectTypeName[((Handle)? Handle->Type : 0)], ((Handle && Handle->Name)? Handle->Name : "") );
|
||||
}
|
||||
|
||||
// Overwrite Parameters
|
||||
(*SelectHandle)->Handle = Handle;
|
||||
(*SelectHandle)->Function = Function;
|
||||
|
||||
if (Log) Log->Message( LogLevel, dlHigh, "Selector: FD [%d], %s, %s - Re-used", FD,
|
||||
ConnectTypeName[((Handle)? Handle->Type : 0)], ((Handle && Handle->Name)? Handle->Name : "") );
|
||||
}
|
||||
|
||||
// Add Read select
|
||||
@@ -176,7 +178,7 @@ void CSelect::Remove( int FD, bool Read, bool Write )
|
||||
|
||||
// Log event
|
||||
if (Log) Log->Message( LogLevel, dlHigh, "Selector: FD [%d], %s, %s - Remove Write", FD,
|
||||
ConnectTypeName[((Handle)? Handle->Type : 0)], ((Handle && Handle->Name)? Handle->Name : "") );
|
||||
ConnectTypeName[((Handle)? Handle->Type : 0)], ((Handle && Handle->Name)? Handle->Name : "") );
|
||||
}
|
||||
// Handle will be removed in Test() if both Read & Write flags are false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user