diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-10-16 12:07:45 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-10-16 12:07:45 +0200 |
commit | 4c188ac86175422bc44e88e037b01acaba781cb7 (patch) | |
tree | ed56ddc029eb0153dccc3aa73e597bfe7be0421c | |
parent | ecebe8a755251375b18ede7afc8e684ad1be0bf8 (diff) | |
download | fastd-4c188ac86175422bc44e88e037b01acaba781cb7.tar fastd-4c188ac86175422bc44e88e037b01acaba781cb7.zip |
Fix fast roaming when local IP address has changed
-rw-r--r-- | src/send.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -122,6 +122,16 @@ static void send_type(fastd_context_t *ctx, const fastd_socket_t *sock, const fa ret = sendmsg(sock->fd, &msg, 0); } while (ret < 0 && errno == EINTR); + if (ret < 0 && errno == EINVAL && msg.msg_controllen) { + pr_debug2(ctx, "sendmsg failed, trying again without pktinfo"); + msg.msg_control = NULL; + msg.msg_controllen = 0; + + do { + ret = sendmsg(sock->fd, &msg, 0); + } while (ret < 0 && errno == EINTR); + } + if (ret < 0) { switch (errno) { case EAGAIN: |