@@ -114,22 +114,20 @@ void SetNonBlock(SOCKET fd, bool value) {
114114
115115void SetTimeout (SOCKET fd, const SocketTimeoutParams& timeout_params) {
116116#if defined(_unix_)
117- timeval recv_timeout { timeout_params.recv_timeout_s .count (), static_cast <int >(timeout_params.recv_timeout_us .count ()) };
117+ timeval recv_timeout{ timeout_params.recv_timeout .count () / 1000 , static_cast <int >(timeout_params.recv_timeout .count () % 1000 * 1000 ) };
118118 auto recv_ret = setsockopt (fd, SOL_SOCKET, SO_RCVTIMEO, &recv_timeout, sizeof (recv_timeout));
119119
120- timeval send_timeout { timeout_params.send_timeout_s .count (), static_cast <int >(timeout_params.send_timeout_us .count ()) };
120+ timeval send_timeout{ timeout_params.send_timeout .count () / 1000 , static_cast <int >(timeout_params.send_timeout .count () % 1000 * 1000 ) };
121121 auto send_ret = setsockopt (fd, SOL_SOCKET, SO_SNDTIMEO, &send_timeout, sizeof (send_timeout));
122122
123123 if (recv_ret == -1 || send_ret == -1 ) {
124124 throw std::system_error (getSocketErrorCode (), getErrorCategory (), " fail to set socket timeout" );
125125 }
126126#else
127- const struct timeval recv_tv { timeout_params.recv_timeout_s.count(), timeout_params.recv_timeout_us.count()};
128- DWORD recv_timeout = recv_tv.tv_sec * 1000 + recv_tv.tv_usec / 1000 ;
127+ DWORD recv_timeout = static_cast <DWORD>(timeout_params.recv_timeout .count ());
129128 auto recv_ret = setsockopt (fd, SOL_SOCKET, SO_RCVTIMEO, (const char *)&recv_timeout, sizeof (DWORD));
130-
131- const struct timeval send_tv { timeout_params.send_timeout_s.count(), timeout_params.send_timeout_us.count()};
132- DWORD send_timeout = send_tv.tv_sec * 1000 + send_tv.tv_usec / 1000 ;
129+
130+ DWORD send_timeout = static_cast <DWORD>(timeout_params.send_timeout .count ());
133131 auto send_ret = setsockopt (fd, SOL_SOCKET, SO_SNDTIMEO, (const char *)&send_timeout, sizeof (DWORD));
134132
135133 if (recv_ret == SOCKET_ERROR || send_ret == SOCKET_ERROR) {
0 commit comments