Jelajahi Sumber

WinTLS: Fix busy loop on write error

Tatsuhiro Tsujikawa 9 tahun lalu
induk
melakukan
d289dc1108
1 mengubah file dengan 2 tambahan dan 3 penghapusan
  1. 2 3
      src/WinTLSSession.cc

+ 2 - 3
src/WinTLSSession.cc

@@ -284,9 +284,8 @@ ssize_t WinTLSSession::writeData(const void* data, size_t len)
                    (uint64_t)len, (uint64_t)writeBuf_.size()));
 
   // Write remaining buffered data, if any.
-  size_t written = 0;
   while (writeBuf_.size()) {
-    written = ::send(sockfd_, writeBuf_.data(), writeBuf_.size(), 0);
+    auto written = ::send(sockfd_, writeBuf_.data(), writeBuf_.size(), 0);
     errno = ::WSAGetLastError();
     if (written < 0 && errno == WSAEINTR) {
       continue;
@@ -385,7 +384,7 @@ ssize_t WinTLSSession::writeData(const void* data, size_t len)
     // Write (or buffer) the message.
     char* p = buf.get();
     while (dl) {
-      written = ::send(sockfd_, p, dl, 0);
+      auto written = ::send(sockfd_, p, dl, 0);
       errno = ::WSAGetLastError();
       if (written < 0 && errno == WSAEINTR) {
         continue;