238
238
mongoc_socket_errno (mongoc_socket_t * sock ) /* IN */
239
239
{
240
240
BSON_ASSERT (sock );
241
+ TRACE ("Current errno: %d" , sock -> errno_ );
241
242
return sock -> errno_ ;
242
243
}
243
244
@@ -900,10 +901,11 @@ _mongoc_socket_try_sendv (mongoc_socket_t *sock, /* IN */
900
901
{
901
902
#ifdef _WIN32
902
903
DWORD dwNumberofBytesSent = 0 ;
904
+ int ret ;
903
905
#else
904
906
struct msghdr msg ;
905
- #endif
906
907
ssize_t ret = -1 ;
908
+ #endif
907
909
908
910
ENTRY ;
909
911
@@ -916,8 +918,7 @@ _mongoc_socket_try_sendv (mongoc_socket_t *sock, /* IN */
916
918
#ifdef _WIN32
917
919
ret = WSASend (sock -> sd , (LPWSABUF )iov , iovcnt , & dwNumberofBytesSent ,
918
920
0 , NULL , NULL );
919
- ret = ret ? -1 : dwNumberofBytesSent ;
920
- errno = WSAGetLastError ();
921
+ TRACE ("WSASend sent: %ld (out of: %ld), ret: %d" , dwNumberofBytesSent , iov -> iov_len , ret );
921
922
#else
922
923
memset (& msg , 0 , sizeof msg );
923
924
msg .msg_iov = iov ;
@@ -928,11 +929,15 @@ _mongoc_socket_try_sendv (mongoc_socket_t *sock, /* IN */
928
929
# else
929
930
0 );
930
931
# endif
932
+ TRACE ("Send %ld out of %ld bytes" , ret , iov -> iov_len );
931
933
#endif
932
934
933
- TRACE ("Send %ld out of %ld bytes" , ret , iov -> iov_len );
934
935
936
+ #ifdef _WIN32
937
+ if (ret == SOCKET_ERROR ) {
938
+ #else
935
939
if (ret == -1 ) {
940
+ #endif
936
941
_mongoc_socket_capture_errno (sock );
937
942
938
943
/*
@@ -941,15 +946,21 @@ _mongoc_socket_try_sendv (mongoc_socket_t *sock, /* IN */
941
946
* send() commands.
942
947
*/
943
948
#ifdef _WIN32
944
- if (errno == WSAEMSGSIZE ) {
949
+ if (mongoc_socket_errno ( sock ) == WSAEMSGSIZE ) {
945
950
#else
946
- if (errno == EMSGSIZE ) {
951
+ if (mongoc_socket_errno ( sock ) == EMSGSIZE ) {
947
952
#endif
948
953
RETURN (_mongoc_socket_try_sendv_slow (sock , iov , iovcnt ));
949
954
}
955
+
956
+ RETURN (-1 );
950
957
}
951
958
959
+ #ifdef _WIN32
960
+ RETURN (dwNumberofBytesSent );
961
+ #else
952
962
RETURN (ret );
963
+ #endif
953
964
}
954
965
955
966
0 commit comments