Fixes #22811
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/22813)
(cherry picked from commit
ba58e9f1e22dd9ee2e37078640dcbe9f520a555d)
*/
# if defined(OPENSSL_SYS_WINDOWS)
-# include <winsock2.h>
+# if !defined(_WINSOCKAPI_)
+ /*
+ * winsock2.h defines _WINSOCK2API_ and both winsock2.h and winsock.h define
+ * _WINSOCKAPI_. Both of these provide struct timeval. Don't include
+ * winsock2.h if either header has been included to avoid breakage with
+ * applications that prefer to use <winsock.h> over <winsock2.h>.
+ */
+# include <winsock2.h>
+# endif
# else
# include <sys/time.h>
# endif