protected override void OnClose (TimeSpan timeout)
{
if (close_started)
return;
close_started = true;
DateTime start = DateTime.Now;
// FIXME: consider timeout
AbortConnections (timeout - (DateTime.Now - start));
base.OnClose (timeout - (DateTime.Now - start));
}