<p dir="ltr"><br>
On Nov 16, 2012 7:46 PM, &quot;Pavel Emelyanov&quot; &lt;<a href="mailto:xemul@parallels.com">xemul@parallels.com</a>&gt; wrote:<br>
&gt;<br>
&gt; On 11/16/2012 07:02 PM, Andrey Vagin wrote:<br>
&gt; &gt; A socket can get fin and a state will be changed on CLOSE_WAIT,<br>
&gt; &gt; which is not supported yet.<br>
&gt; &gt;<br>
&gt; &gt; Signed-off-by: Andrey Vagin &lt;<a href="mailto:avagin@openvz.org">avagin@openvz.org</a>&gt;<br>
&gt; &gt; ---<br>
&gt; &gt;  sk-tcp.c | 18 ++++++++++++++++++<br>
&gt; &gt;  1 file changed, 18 insertions(+)<br>
&gt; &gt;<br>
&gt; &gt; diff --git a/sk-tcp.c b/sk-tcp.c<br>
&gt; &gt; index 17f5ab2..2cbdb90 100644<br>
&gt; &gt; --- a/sk-tcp.c<br>
&gt; &gt; +++ b/sk-tcp.c<br>
&gt; &gt; @@ -54,6 +54,24 @@ static int tcp_repair_on(int fd)<br>
&gt; &gt;  static int refresh_inet_sk(struct inet_sk_desc *sk)<br>
&gt; &gt;  {<br>
&gt; &gt;       int size;<br>
&gt; &gt; +     struct tcp_info info;<br>
&gt; &gt; +<br>
&gt; &gt; +     if (sk-&gt;state == TCP_CLOSE)<br>
&gt; &gt; +             return 0;<br>
&gt;<br>
&gt; Yet again -- how can this be true? This fn is called for establised<br>
&gt; sockets only<br>
It&#39;s a copy past. Sorry again. Don&#39;t send patch at the last minute...<br>
&gt;<br>
&gt; &gt; +<br>
&gt; &gt; +     if (dump_opt(sk-&gt;rfd, SOL_TCP, TCP_INFO, &amp;info)) {<br>
&gt; &gt; +             pr_perror(&quot;Failt to obtain TCP_INFO&quot;);<br>
&gt; &gt; +             return -1;<br>
&gt; &gt; +     }<br>
&gt; &gt; +<br>
&gt; &gt; +     switch (info.tcpi_state) {<br>
&gt; &gt; +     case TCP_ESTABLISHED:<br>
&gt; &gt; +     case TCP_CLOSE:<br>
&gt; &gt; +             break;<br>
&gt; &gt; +     default:<br>
&gt; &gt; +             pr_err(&quot;Unknown state %d\n&quot;, sk-&gt;state);<br>
&gt; &gt; +             return -1;<br>
&gt; &gt; +     }<br>
&gt; &gt;<br>
&gt; &gt;       if (ioctl(sk-&gt;rfd, SIOCOUTQ, &amp;size) == -1) {<br>
&gt; &gt;               pr_perror(&quot;Unable to get size of snd queue&quot;);<br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
</p>