diff options
author | Christian Pointner <equinox@anytun.org> | 2009-02-26 15:20:10 +0000 |
---|---|---|
committer | Christian Pointner <equinox@anytun.org> | 2009-02-26 15:20:10 +0000 |
commit | fbb7de7511c3773430bacd478ea4c484844bd74e (patch) | |
tree | 767da82df762183e74e3b6689c64334a9b187e49 /src | |
parent | moved from %m to %s and strerror (diff) |
fixed address length for openbsd
Diffstat (limited to 'src')
-rw-r--r-- | src/udp.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -222,6 +222,13 @@ int udp_write(udp_socket_t* sock, u_int8_t* buf, u_int32_t len) if(!sock) return -1; - return sendto(sock->fd_, buf, len, 0, (struct sockaddr *)&(sock->remote_end_), sizeof(sock->remote_end_));; + socklen_t socklen = sizeof(sock->remote_end_); +#ifdef NO_V4MAPPED + if((((struct sockaddr *)&sock->local_end_)->sa_family) == AF_INET) + socklen = sizeof(struct sockaddr_in); + else if ((((struct sockaddr *)&sock->local_end_)->sa_family) == AF_INET6) + socklen = sizeof(struct sockaddr_in6); +#endif + return sendto(sock->fd_, buf, len, 0, (struct sockaddr *)&(sock->remote_end_), socklen);; } |