Просмотр исходного кода

MHD_upgraded_send(): do not wait for socket readyness if all data have been sent

Evgeny Grin (Karlson2k) 1 год назад
Родитель
Сommit
4ff351438e
1 измененных файлов с 6 добавлено и 2 удалено
  1. 6 2
      src/mhd2/upgrade_net.c

+ 6 - 2
src/mhd2/upgrade_net.c

@@ -343,7 +343,7 @@ MHD_upgraded_send (struct MHD_UpgradeHandle *MHD_RESTRICT urh,
   finish_time_set = false;
   wait_indefinitely = (MHD_WAIT_INDEFINITELY <= max_wait_millisec);
 
-  while (*sent_size != send_buf_size)
+  while (1)
   {
     enum mhd_SocketError res;
     size_t last_block_size;
@@ -359,11 +359,15 @@ MHD_upgraded_send (struct MHD_UpgradeHandle *MHD_RESTRICT urh,
                          push_data,
                          &last_block_size);
     if (mhd_SOCKET_ERR_NO_ERROR == res)
+    {
       *sent_size += last_block_size;
+      if (send_buf_size == *sent_size)
+        break;
+    }
     else if (mhd_SOCKET_ERR_IS_HARD (res))
     {
       if (0 != *sent_size)
-        return MHD_SC_OK;
+        break;
 
       if (mhd_SOCKET_ERR_REMT_DISCONN == res)
         return MHD_SC_UPGRADED_NET_CONN_CLOSED;