Skip to content

Commit 2ac796f

Browse files
committed
Fix not closing delayed denied connections on reloadTimers()
This fixes keeping delayed denied sockets open when you change the save state interval or plugin periodic events and send a SIGHUP.
1 parent 1797bc0 commit 2ac796f

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

mainapp.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -724,9 +724,13 @@ void MainApp::start()
724724
const uint32_t delay = (randomish() & 0x0FFF) + 1000;
725725
oss << ". Closing after " << delay << " ms.";
726726

727-
auto close_f = [fd]()
727+
// Queue managed fd so that on SIGHUP, they all get closed when the timers are cleared. A bit clunky to
728+
// make a shared pointer, but tasks need copyable things.
729+
std::shared_ptr<FdManaged> fd_managed = std::make_shared<FdManaged>(fd);
730+
731+
auto close_f = [fd_managed]()
728732
{
729-
close(fd);
733+
(void)fd_managed;
730734
};
731735

732736
timed_tasks.addTask(close_f, delay);

0 commit comments

Comments
 (0)