diff options
Diffstat (limited to 'lib/connect.c')
-rw-r--r-- | lib/connect.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/lib/connect.c b/lib/connect.c index 0816af2d4..16ad524df 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -916,19 +916,38 @@ void Curl_sndbufset(curl_socket_t sockfd) int val = CURL_MAX_WRITE_SIZE + 32; int curval = 0; int curlen = sizeof(curval); + DWORD majorVersion = 6; - OSVERSIONINFO osver; static int detectOsState = DETECT_OS_NONE; if(detectOsState == DETECT_OS_NONE) { +#if !defined(VerifyVersionInfo) + OSVERSIONINFO osver; + memset(&osver, 0, sizeof(osver)); osver.dwOSVersionInfoSize = sizeof(osver); + detectOsState = DETECT_OS_PREVISTA; if(GetVersionEx(&osver)) { - if(osver.dwMajorVersion >= 6) + if(osver.dwMajorVersion >= majorVersion) detectOsState = DETECT_OS_VISTA_OR_LATER; } +#else + ULONGLONG majorVersionMask; + OSVERSIONINFOEX osver; + + memset(&osver, 0, sizeof(osver)); + osver.dwOSVersionInfoSize = sizeof(osver); + osver.dwMajorVersion = majorVersion; + majorVersionMask = VerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL); + + if(VerifyVersionInfo(&osver, VER_MAJORVERSION, majorVersionMask)) + detectOsState = DETECT_OS_VISTA_OR_LATER; + else + detectOsState = DETECT_OS_PREVISTA; +#endif } + if(detectOsState == DETECT_OS_VISTA_OR_LATER) return; @@ -940,7 +959,6 @@ void Curl_sndbufset(curl_socket_t sockfd) } #endif - /* * singleipconnect() * |