Commit 9b5ca556 authored by Andy Polyakov's avatar Andy Polyakov
Browse files

sendto is reportedly picky about destination socket address length.

PR: 2114
Submitted by: Robin Seggelmann
parent cba9ffc3
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -335,11 +335,21 @@ static int dgram_write(BIO *b, const char *in, int inl)
	if ( data->connected )
		ret=writesocket(b->num,in,inl);
	else
		{
		int peerlen = sizeof(data->peer);

		if (data->peer.sa.sa_family == AF_INET)
			peerlen = sizeof(data->peer.sa_in);
#if OPENSSL_USE_IVP6
		else if (data->peer.sa.sa_family == AF_INET6)
			peerlen = sizeof(data->peer.sa_in6);
#endif
#if defined(NETWARE_CLIB) && defined(NETWARE_BSDSOCK)
		ret=sendto(b->num, (char *)in, inl, 0, &data->peer.sa, sizeof(data->peer));
		ret=sendto(b->num, (char *)in, inl, 0, &data->peer.sa, peerlen);
#else
		ret=sendto(b->num, in, inl, 0, &data->peer.sa, sizeof(data->peer));
		ret=sendto(b->num, in, inl, 0, &data->peer.sa, peerlen);
#endif
		}

	BIO_clear_retry_flags(b);
	if (ret <= 0)