assign it here.
Note: this might change the family from ipv6 to ipv4
*/
-static int swrap_auto_bind(struct socket_info *si, int family)
+static int swrap_auto_bind(int fd, struct socket_info *si, int family)
{
struct sockaddr_un un_addr;
int i;
type, socket_wrapper_default_iface(), port);
if (stat(un_addr.sun_path, &st) == 0) continue;
- ret = real_bind(si->fd, (struct sockaddr *)(void *)&un_addr,
+ ret = real_bind(fd, (struct sockaddr *)(void *)&un_addr,
sizeof(un_addr));
if (ret == -1) return ret;
}
if (si->bound == 0) {
- ret = swrap_auto_bind(si, serv_addr->sa_family);
+ ret = swrap_auto_bind(s, si, serv_addr->sa_family);
if (ret == -1) return -1;
}
return ret;
}
-static ssize_t swrap_sendmsg_before(struct socket_info *si,
+static ssize_t swrap_sendmsg_before(int fd,
+ struct socket_info *si,
struct msghdr *msg,
struct iovec *tmp_iov,
struct sockaddr_un *tmp_un,
}
if (si->bound == 0) {
- ret = swrap_auto_bind(si, si->family);
+ ret = swrap_auto_bind(fd, si, si->family);
if (ret == -1) return -1;
}
tmp_un, 0, NULL);
if (ret == -1) return -1;
- ret = real_connect(si->fd, (struct sockaddr *)(void *)tmp_un,
+ ret = real_connect(fd, (struct sockaddr *)(void *)tmp_un,
sizeof(*tmp_un));
/* to give better errors */
msg.msg_flags = 0; /* flags on received message */
#endif
- ret = swrap_sendmsg_before(si, &msg, &tmp, &un_addr, &to_un, &to, &bcast);
+ ret = swrap_sendmsg_before(s, si, &msg, &tmp, &un_addr, &to_un, &to, &bcast);
if (ret == -1) return -1;
buf = msg.msg_iov[0].iov_base;
msg.msg_flags = 0; /* flags on received message */
#endif
- ret = swrap_sendmsg_before(si, &msg, &tmp, &un_addr, NULL, NULL, NULL);
+ ret = swrap_sendmsg_before(s, si, &msg, &tmp, &un_addr, NULL, NULL, NULL);
if (ret == -1) return -1;
buf = msg.msg_iov[0].iov_base;
msg.msg_flags = omsg->msg_flags; /* flags on received message */
#endif
- ret = swrap_sendmsg_before(si, &msg, &tmp, &un_addr, &to_un, &to, &bcast);
+ ret = swrap_sendmsg_before(s, si, &msg, &tmp, &un_addr, &to_un, &to, &bcast);
if (ret == -1) return -1;
if (bcast) {
msg.msg_flags = 0; /* flags on received message */
#endif
- ret = swrap_sendmsg_before(si, &msg, &tmp, &un_addr, NULL, NULL, NULL);
+ ret = swrap_sendmsg_before(s, si, &msg, &tmp, &un_addr, NULL, NULL, NULL);
if (ret == -1) return -1;
ret = real_writev(s, msg.msg_iov, msg.msg_iovlen);