-In realtà l'unica chiamata critica che può essere interrotta nel server è
-quella ad \func{accept}, dato che questa è l'unica che può mettere il processo
-padre in stato di sleep.\footnote{si noti infatti che le altre \textit{slow
- system call} o sono chiamate prima di entrare nel ciclo principale, quando
- ancora non esistono processi figli, o sono chiamate dai figli stessi.} Per
-questo l'unica modifica nella nuova versione del server, rispetto alla
-versione precedente vista in \figref{fig:TCP_ServEcho}, è nella sezione
-(\texttt{\small 43--48}) in cui si effettua la chiamata di \func{accept}.
-Quest'ultima allora viene effettuata (\texttt{\small 43--44}) all'interno di
-un ciclo di \code{while}\footnote{la sintassi del C relativa a questo ciclo
- può non essere del tutto chiara. In questo caso infatti si è usato un ciclo
- vuoto che non esegue nessuna istruzione, in questo modo quello che viene
- ripetuto con il ciclo è soltanto il codice che esprime la condizione
- all'interno del \code{while}.} che la ripete indefinitamente qualora in
-caso di errore il valore di \var{errno} sia \errcode{EINTR}. Negli altri casi
-si esce in caso di errore effettivo (\texttt{\small 45--48}), altrimenti il
-programma prosegue esattamente allo stesso modo del precedente.
+Vediamo allora come è cambiato il nostro server; una volta definite le
+variabili e trattate le opzioni il primo passo (\texttt{\small 9--13}) è
+verificare la semantica scelta per la gestione di \const{SIGCHLD}, a seconda
+del valore di \var{compat} (\texttt{\small 9}) si installa il gestore con la
+funzione \func{Signal} (\texttt{\small 10}) o con \texttt{SignalRestart}
+(\texttt{\small 12}), essendo quest'ultimo il valore di default.
+
+Tutta la sezione seguente, che crea il socket, cede i privilegi di
+amministratore ed eventualmente lancia il programma come demone, è rimasta
+invariata e pertanto non la si è riportata in
+\figref{fig:TCP_echo_server_code_second}; l'unica modifica effettuata è stata
+quella di aver introdotto (\texttt{\small 21}) l'eventuale pausa specificata
+con l'opzione \code{-w Nsec}, che inizializza la variabile \var{waiting} al
+numero di secondi da aspettare, subito dopo la chiamata (\texttt{\small
+ 17--20}) alla funzione \func{listen}.
+
+Si è potuto far questo perché l'unica chiamata critica che può essere
+interrotta da \const{SIGCHLD} nel server è quella ad \func{accept}, che è
+l'unica funzione che può mettere il processo padre in stato di
+sleep.\footnote{si noti infatti che le altre \textit{slow system call} o sono
+ chiamate prima di entrare nel ciclo principale, quando ancora non esistono
+ processi figli, o sono chiamate dai figli stessi.}
+
+
+Per questo l'unica modifica sostanziale ciclo principale (\texttt{\small
+ 23--42}) rispetto precedente versione di \figref{fig:TCP_ServEcho_first}, è
+nella sezione (\texttt{\small 26--30}) in cui si effettua la chiamata di
+\func{accept}. Quest'ultima viene effettuata (\texttt{\small 26--27})
+all'interno di un ciclo di \code{while}\footnote{la sintassi del C relativa a
+ questo ciclo può non essere del tutto chiara. In questo caso infatti si è
+ usato un ciclo vuoto che non esegue nessuna istruzione, in questo modo
+ quello che viene ripetuto con il ciclo è soltanto il codice che esprime la
+ condizione all'interno del \code{while}.} che la ripete indefinitamente
+qualora in caso di errore il valore di \var{errno} sia \errcode{EINTR}. Negli
+altri casi si esce in caso di errore effettivo (\texttt{\small 27--29}),
+altrimenti il programma prosegue.
+
+Si noti che in questa nuova versione si è aggiunta una ulteriore sezione
+(\texttt{\small 31--39}) di aiuto per il debug del programma, che eseguita con
+un controllo (\texttt{\small 31}) sul valore della variabile \var{debugging}
+impostato dall'opzione \texttt{-d}. Qualora questo sia nullo, come
+preimpostato, non accade nulla. altrimenti (\texttt{\small 32}) l'indirizzo
+ricevuto da \var{accept} viene convertito in una stringa che poi
+(\texttt{\small 33--38}) viene opportunamente stampata o sullo schermo o nei
+log.