Check your memory usage.  I'll bet you're leaking a ConnOpener object
on every timeout.

You'll need something like

   // wipe out the InProgressConnectRetry write handler
     if (temporaryFd_ >= 0) {
        fde *F = &fd_table[temporaryFd_];
        if (F->write_handler == Comm::ConnOpener::InProgressConnectRetry && 
F->write_data != NULL) {
            Pointer *ptr = static_cast<Pointer*>(F->write_data);
            Comm::SetSelect(temporaryFd_, COMM_SELECT_WRITE, NULL, NULL, 0);
            delete ptr;
        }

added to your ConnOpener::timeout() function.

Mike Mitchell

Reply via email to