Use correct sizeof for IPv4/IPv6 in udp_trsp::send.

git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@745 8eb893ce-cfd4-0310-b710-fb5ebe64c474
sayer/1.4-spce2.6
Richard Newman 19 years ago
parent 7b3563b882
commit 6fa2ab95e2

@ -201,15 +201,26 @@ int udp_trsp::bind(const string& address, unsigned short port)
/** @see transport */
int udp_trsp::send(const sockaddr_storage* sa, const char* msg, const int msg_len)
{
int err = sendto(sd,msg,msg_len,0,(const struct sockaddr*)sa,sizeof(sockaddr_storage));
if(err < 0){
ERROR("sendto: %s\n",strerror(errno));
return err;
}
else if(err != msg_len){
ERROR("sendto: sent %i instead of %i bytes\n",err,msg_len);
return -1;
}
int err;
#ifdef SUPPORT_IPV6
if (sa->ss_family == AF_INET6) {
err = sendto(sd, msg, msg_len, 0, (const struct sockaddr*)sa, sizeof(sockaddr_in6));
}
else {
#endif
err = sendto(sd, msg, msg_len, 0, (const struct sockaddr*)sa, sizeof(sockaddr_in));
#ifdef SUPPORT_IPV6
}
#endif
return 0;
if (err < 0) {
ERROR("sendto: %s\n",strerror(errno));
return err;
}
else if (err != msg_len) {
ERROR("sendto: sent %i instead of %i bytes\n", err, msg_len);
return -1;
}
return 0;
}

Loading…
Cancel
Save