Я создал простой HTTP-прокси, используя libevent. Его можно отключить, отправив ему сигнал SIGHUP
, который перехватывается обработчиком сигнала. Функция выключения вызывает event_base_loopexit
, освобождает структуры и другие выделения кучи и завершает работу.
Проблема в том, что SIGHUP
перехватывается при открытом соединении. Мне нужно иметь возможность закрыть сокет, в идеале вызывая ту же функцию закрытия, которая вызывается при перехвате события закрытия.
Есть ли правильный или стандартный способ сделать это?
На данный момент единственное, что я могу придумать, это сохранить связанный список подключений и просто перебирать его при выключении, закрывая каждое по очереди.