[Bug 210726] tcp connect() EADDRINUSE
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Thu Jun 30 19:12:01 UTC 2016
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=210726
Bug ID: 210726
Summary: tcp connect() EADDRINUSE
Product: Base System
Version: 10.3-STABLE
Hardware: Any
OS: Any
Status: New
Severity: Affects Some People
Priority: ---
Component: kern
Assignee: freebsd-bugs at FreeBSD.org
Reporter: aler at playground.ru
Port autoselection on connect() without bind() (or with bind() with zero
sin_port) sometimes works wronly and gives already busy local port
number that will lead to EADDRINUSE on connection attempt. This all
happens when jails used.
How to fix:
src/sys/netinet/in_pcb.c, in_pcb_lport() function
calls to in_pcblookup_local() should have last argument NULL, not cred
that's because here we are not about getting some access but about
avoiding port number conflicts, so all inpcb's should be taken in account
This all applies to FreeBSD 9.x, 10.x and HEAD (possibly older versions too).
Patch:
diff -ur src-svn/10.2/sys/netinet/in_pcb.c src/sys/netinet/in_pcb.c
--- src-svn/10.2/sys/netinet/in_pcb.c 2016-03-15 22:58:38.088511000 +0300
+++ src/sys/netinet/in_pcb.c 2016-05-20 14:51:43.340568000 +0300
@@ -452,7 +452,7 @@
#endif
#ifdef INET
tmpinp = in_pcblookup_local(pcbinfo, laddr,
- lport, lookupflags, cred);
+ lport, lookupflags, NULL /*cred*/);
#endif
} while (tmpinp != NULL);
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list