-L'uso di \const{SO\_LINGER} permette di modificare (ed eventualmente
-ripristinare) questo comportamento in base ai valori passati nei campi della
-stuttura \struct{linger}. Fintanto che il valore del campo \var{l\_onoff} di
-\struct{linger} è nullo la modalità che viene impostata (qualunque sia il
-valore di \var{l\_linger}) è quella standard appena illustrata.
-
-Se però si utilizza un valore di \var{l\_onoff} diverso da zero per
-l'impostazione di \const{SO\_LINGER} il comportamento dipende dal valore di
-\var{l\_linger}; se quest'ultimo è nullo l'uso delle funzioni \func{close} e
-\func{shutdown} provoca la terminazione immediata della connessione: nel caso
-di TCP cioè non viene eseguito il procedimento di chiusura illustrato in
-sez.~\ref{sec:TCP_conn_term}, ma viene inviato un segmento di RST che termina
-immediatamente la connessione. Se invece \var{l\_linger} ha un valore diverso
-da zero sia \func{close} che \func{shutdown} si bloccano e non ritornano
-fintanto che non si sia concluso il procedimento di chiusura della
-connessione, o non siano passati il numero di secondi specificati da
-\var{l\_linger}.
+L'uso di \const{SO\_LINGER} con \func{setsockopt} permette di modificare (ed
+eventualmente ripristinare) questo comportamento in base ai valori passati nei
+campi della stuttura \struct{linger}, illustrata in
+fig.~\ref{fig:sock_linger_struct}. Fintanto che il valore del campo
+\var{l\_onoff} di \struct{linger} è nullo la modalità che viene impostata
+(qualunque sia il valore di \var{l\_linger}) è quella standard appena
+illustrata; questa combinazione viene utilizzata per riportarsi al
+comportamento normale qualora esso sia stato cambiato da una precedente
+chiamata.
+
+Se però si utilizza un valore di \var{l\_onoff} diverso da zero, il
+comportamento alla chiusura viene a dipendere dal valore specificato per il
+campo \var{l\_linger}; se quest'ultimo è nullo l'uso delle funzioni
+\func{close} e \func{shutdown} provoca la terminazione immediata della
+connessione: nel caso di TCP cioè non viene eseguito il procedimento di
+chiusura illustrato in sez.~\ref{sec:TCP_conn_term}, ma tutti i dati ancora
+presenti nel buffer vengono immediatamente scartati e sulla rete viene inviato
+un segmento di RST che termina immediatamente la connessione.
+
+Un esempio di questo comportamento si può abilitare nel nostro client del
+servizio \textit{echo} utilizzando l'opzione \texttt{-r}, al solito riportiamo
+in fig.~\ref{fig:TCP_echo_sixth} solo la sezione di codice rilevante, il
+codice completo è disponibile nei sorgenti allegati.
+
+\begin{figure}[!htb]
+ \footnotesize \centering
+ \begin{minipage}[c]{15cm}
+ \includecodesample{listati/TCP_echo_sixth.c}
+ \end{minipage}
+ \normalsize
+ \caption{La sezione del codice del client \textit{echo} che imposta la
+ terminazione immediata della connessione in caso di chiusura.}
+ \label{fig:TCP_echo_sixth}
+\end{figure}
+
+In questo caso la sezione indicata viene eseguita dopo aver effettuato la
+connessione e prima di chiamare la funzione di gestione, cioè fra le righe
+(\texttt{\small 12}) e (\texttt{\small 13}) del precedente esempio di
+fig.~\ref{fig:TCP_echo_fifth}. Il codice si limita semplicememente a
+controllare (\texttt{\small 3}) il valore della variabile \var{reset}
+(opportunamente impostata nella gestione delle opzioni qualora si usi
+\texttt{-r} nella chiamata del client) e nel caso impostare (\texttt{\small
+ 5--6}) gli opportuni valori della struttura \var{ling}, per poi usare questa
+nella successiva (\texttt{\small 7}) chiamata a \func{setsockopt}. Di questa
+(\texttt{\small 7--10}) viene comunque controllato il valore di ritorno ed
+eseguita la terminazione del programma in caso un eventuale errore, con stampa
+dello stesso.
+
+Infine se sia \var{l\_onoff} che \var{l\_linger} hanno un valore diverso da
+zero sia \func{close} che \func{shutdown} si bloccano eseguendo la normale
+procedura di conclusione della connessione (quella di
+sez.~\ref{sec:TCP_conn_term}) e non ritornano fintanto che non si sia concluso
+il procedimento di chiusura della connessione, o non siano passati il numero
+di secondi\footnote{questa è l'unità di misura indicata da POSIX ed adottata
+ da Linux, altri kernel possono usare unità di misura diverse, oppure usare
+ il campo \var{l\_linger} come valore logico (ignorandone il valore) per
+ rendere (quando diverso da zero) \func{close} e \func{shutdown} bloccanti
+ fino al completamento della trasmissione dei dati sul buffer.} specificati
+da \var{l\_linger}.
+
+