void RestoreTarget::dupAllSockets (SlidingFdTable& slidingFd) { int lastfd = -1; dmtcp::vector<int> fdlist; ConnectionToFds::const_iterator i; for (i = _conToFd.begin(); i!=_conToFd.end(); ++i) { Connection& con = ConnectionList::instance() [i->first]; if (con.conType() == Connection::INVALID) { JWARNING(false)(i->first).Text("Can't restore invalid Connection"); continue; } const dmtcp::vector<int>& fds = i->second; for (size_t x=0; x<fds.size(); ++x) { int fd = fds[x]; fdlist.push_back (fd); slidingFd.freeUpFd (fd); int oldFd = slidingFd.getFdFor (i->first); JTRACE ("restoring fd") (i->first) (oldFd) (fd); //let connection do custom dup2 handling con.restartDup2(oldFd, fd); if (fd > lastfd) { lastfd = fd; } } } size_t j; for (int i = 0 ; i < slidingFd.startFd() ; i++) { for (j = 0 ; j < fdlist.size() ; j++) { if (fdlist.at (j) == i) { break; } } if (j == fdlist.size()) { close ( i ); } } slidingFd.closeAll(); }