Address gethostname failure due to missing WinSock initialization #1363
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Addresses the following
stderr
output by thetest_bson
test binary on Windows:This message is emitted by a call to
gethostname
in_bson_context_get_hostname
by the following stack trace:Patching the mongoc library to print the value of
WSAGetLastError
(rather thanerrno
) reveals an error code value ofWSANOTINITIALIZED
. This reveals thatgethostname
, a function provided by the WinSock library, is being invoked before a successful call toWSAStartup
. This call is usually handled bymongoc_init
. However,test_bson
does not use themongoc
ormongocxx
library. Therefore, it does not callmongoc_init
orWSAStartup
before callingbson_oid_init
.This PR proposes a straightforward workaround to manually invoke
WSAStartup
prior to executing the test suite on Windows. Filed CDRIVER-5957 to investigate a more thorough solution to this problem (e.g. document thatmongoc_init
orWSAStartup
must have been invoked first? add internal calls toWSAStartup
/WSACleanup
that wrap thegethostname
on Windows?).