Re: connection failure after "tcp: remove max_qlen_log"

From: Eric Dumazet
Date: Sun Jan 24 2016 - 22:18:25 EST


On Sun, Jan 24, 2016 at 2:17 AM, Kui Zhang <kuizhang@xxxxxxxxx> wrote:
> We licensed the java software. As far as I can tell, the connection is
> for IPC with a child process. There should not be large RTT.
>
> I will contact vendor regarding to listen(fd,0) issue, on Monday.
>
> I am not fully convinced, that is the problem. I saw that man page for
> listen. However accept() works, in python, with backlog = 0. The java
> software works with kernel build one commit before.

Note that python (2.4.6 here) translates sock.listen(0) to listen(fd,
1), maybe to avoid surprises on some OS ;)

$ cat lis.py
#!/usr/bin/python

import socket
sock = socket.socket()
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('127.0.0.1',42000))
sock.listen(0)
s, a= sock.accept()

s.send('test')

$ strace ./lis.py
...
close(5) = 0
close(4) = 0
close(3) = 0
futex(0x8d8e460, FUTEX_WAKE, 1) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(3, {sa_family=AF_INET, sin_port=htons(42000),
sin_addr=inet_addr("127.0.0.1")}, 16) = 0
listen(3, 1) = 0
accept(3,