diff options
author | Martin Sustrik <sustrik@250bpm.com> | 2014-11-16 04:08:37 +0100 |
---|---|---|
committer | Martin Sustrik <sustrik@250bpm.com> | 2014-11-16 04:08:37 +0100 |
commit | 52cc85c3d084ffb6d151927492584b94f3496797 (patch) | |
tree | f42b28277a584ac0c0beca7929cbf5a10d0fde1e | |
parent | 1fb3641ac1179e8d227c9c9ea5e373b206f321fd (diff) | |
download | nanomsg-52cc85c3d084ffb6d151927492584b94f3496797.tar.gz |
Try reconnecting if bind to a local interface fails.
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
-rw-r--r-- | src/transports/tcp/ctcp.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/transports/tcp/ctcp.c b/src/transports/tcp/ctcp.c index 1b8510d..705ac03 100644 --- a/src/transports/tcp/ctcp.c +++ b/src/transports/tcp/ctcp.c @@ -616,7 +616,11 @@ static void nn_ctcp_start_connecting (struct nn_ctcp *self, /* Bind the socket to the local network interface. */ rc = nn_usock_bind (&self->usock, (struct sockaddr*) &local, locallen); - errnum_assert (rc == 0, -rc); + if (nn_slow (rc != 0)) { + nn_backoff_start (&self->retry); + self->state = NN_CTCP_STATE_WAITING; + return; + } /* Start connecting. */ nn_usock_connect (&self->usock, (struct sockaddr*) &remote, remotelen); |