summaryrefslogtreecommitdiffstats
path: root/lib/nl.c
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-08-24 15:57:16 (GMT)
committerThomas Haller <thaller@redhat.com>2015-08-24 16:01:42 (GMT)
commiteaa75b7c7d3e6a4df1a2e7591ae295acfae3f73e (patch)
treed51183750257a529143d6ef89d2fd55641f6e56c /lib/nl.c
parentfa380b409a02fe17b2d5cfc9074a8913523dbb68 (diff)
downloadlibnl-eaa75b7c7d3e6a4df1a2e7591ae295acfae3f73e.zip
libnl-eaa75b7c7d3e6a4df1a2e7591ae295acfae3f73e.tar.gz
libnl-eaa75b7c7d3e6a4df1a2e7591ae295acfae3f73e.tar.bz2
socket: fix assertion in nl_connect() when all ports are already in use
When generating a port fails a few times (because they are already in used outside of libnl's knowledge), we would back off generating a local port and instead let kernel decide. There was however a bug in nl_connect() that caused an assertion: BUG at file position socket.c:147:_nl_socket_used_ports_release_all app: socket.c:147: _nl_socket_used_ports_release_all: Assertion `0' failed. Fixes: 96e1e5bdc2e803700055395cc3c428fa2525d1ca
Diffstat (limited to 'lib/nl.c')
-rw-r--r--lib/nl.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/nl.c b/lib/nl.c
index 737ebaa..c93b6a5 100644
--- a/lib/nl.c
+++ b/lib/nl.c
@@ -137,11 +137,11 @@ int nl_connect(struct nl_sock *sk, int protocol)
if (ntries++ > 5) {
/* try only a few times. We hit this only if many ports are already in
* use but allocated *outside* libnl/generate_local_port(). */
- nl_socket_set_local_port (sk, 0);
+ _nl_socket_set_local_port_no_release (sk, 0);
break;
}
- port = _nl_socket_generate_local_port_no_release(sk);
+ port = _nl_socket_set_local_port_no_release(sk, 1);
if (port == 0)
break;