This release includes the following bugfixes:
+ o TFTP over IPv6 works
o no reverse lookups on IP addresses when ipv6-enabled
o SSPI compatibility fix: using the proper DLLs
o binary LDAP properties are now shown base64 encoded
Dave Dribin, Bradford Bruce, Temprimus, Ofer, Dima Barsky, Amol Pattekar, Jaz
Fresh, tommink[at]post.pl, Gisle Vanem, Nis Jorgensen, Vilmos Nebehaj,
- Dmitry Bartsevich
+ Dmitry Bartsevich, David Lang
Thanks! (and sorry if I forgot to mention someone)
time_t start_time;
time_t max_time;
unsigned short block;
- struct sockaddr local_addr;
+ struct sockaddr_storage local_addr;
socklen_t local_addrlen;
- struct sockaddr remote_addr;
+ struct sockaddr_storage remote_addr;
socklen_t remote_addrlen;
int rbytes;
int sbytes;
state->spacket.event = htons(TFTP_EVENT_ACK);
state->spacket.u.ack.block = htons(state->block);
sbytes = sendto(state->sockfd, &state->spacket, 4, MSG_NOSIGNAL,
- &state->remote_addr, state->remote_addrlen);
+ (struct sockaddr *)&state->remote_addr,
+ state->remote_addrlen);
if(sbytes < 0) {
failf(data, "%s\n", strerror(errno));
}
/* Resend the previous ACK */
sbytes = sendto(state->sockfd, &state->spacket,
4, MSG_NOSIGNAL,
- &state->remote_addr, state->remote_addrlen);
+ (struct sockaddr *)&state->remote_addr,
+ state->remote_addrlen);
/* Check all sbytes were sent */
if(sbytes<0) {
failf(data, "%s\n", strerror(errno));
Curl_fillreadbuffer(state->conn, 512, &state->sbytes);
sbytes = sendto(state->sockfd, &state->spacket,
4+state->sbytes, MSG_NOSIGNAL,
- &state->remote_addr, state->remote_addrlen);
+ (struct sockaddr *)&state->remote_addr,
+ state->remote_addrlen);
/* Check all sbytes were sent */
if(sbytes<0) {
failf(data, "%s\n", strerror(errno));
/* Re-send the data packet */
sbytes = sendto(state->sockfd, &state->spacket,
4+state->sbytes, MSG_NOSIGNAL,
- &state->remote_addr, state->remote_addrlen);
+ (struct sockaddr *)&state->remote_addr,
+ state->remote_addrlen);
/* Check all sbytes were sent */
if(sbytes<0) {
failf(data, "%s\n", strerror(errno));
tftp_set_timeouts(state);
/* Bind to any interface, random UDP port */
- rc = bind(state->sockfd, &state->local_addr, sizeof(state->local_addr));
+ rc = bind(state->sockfd, (struct sockaddr *)&state->local_addr,
+ sizeof(state->local_addr));
if(rc) {
failf(conn->data, "bind() failed; %s\n",
Curl_strerror(conn,Curl_ourerrno()));
tftp_event_t event;
CURLcode code;
int rc;
- struct sockaddr fromaddr;
+ struct sockaddr_storage fromaddr;
socklen_t fromlen;
int check_time = 0;
fromlen=sizeof(fromaddr);
state->rbytes = recvfrom(state->sockfd,
(void *)&state->rpacket, sizeof(state->rpacket),
- 0, &fromaddr, &fromlen);
+ 0, (struct sockaddr *)&fromaddr, &fromlen);
if(state->remote_addrlen==0) {
memcpy(&state->remote_addr, &fromaddr, fromlen);
state->remote_addrlen = fromlen;