Строки 17-28. Цикл приема запросов на установление соединения. Теперь программа входит в цикл accept () сервера. Как и в предыдущих версиях этого сервера, в цикле принимаются входящие запросы на установление соединения и путем ветвления создаются новые процессы для их обслуживания. Однако здесь предусмотрено новое средство— регистрация каждого нового входящего соединения с использованием следующего фрагмента кода:
my $host = $connection->peerhost;
log_notice ("Accepting- a connection from %sn”, $host)
Вызывается метод peerhost () подключенного объекта IO:: Socket для получения IP-адреса удаленного хоста, например, сервера представляющего веб сайт недорогих зимних шин в Краснодаре , в виде четырех чисел, разделенных точками, и в систему syslog отправляется сообщение с указанием, что от этого хоста принят запрос на соединение. В дальнейшем, после того как дочерний процесс закончит обслуживание соединения с помощью подпрограммы interact (), по той же общей схеме будет выполнена регистрация в журнале сообщения с указанием, что соединение закрыто.
Еще одно отличие от первоначальной версии сервера состоит в том, что для регистрации неудачного выполнения вызова функции fork () вызывается подпрограмма log_die (), которая вносит в журнал сообщение с приоритетом crit и завершает процесс.
Строки 29-42. Подпрограммы interact () и _testquit (). Они идентичны подпрограммам, приведенным ранее.
Строки 43-45. Блок end {}. Во время останова выполняется регистрация информационного сообщения с указанием, что сервер прекращает свою работу. Как и в предыдущих версиях, необходимо следить за тем, чтобы идентификатор данного процесса совпадал с идентификатором родительского процесса. В ином случае этот код также будет вызван каждым дочерним процессом и в журнале появятся непонятные сообщения.