浏览代码

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

Evgeny Grin (Karlson2k) 1 年之前
父节点
当前提交
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;
   finish_time_set = false;
   wait_indefinitely = (MHD_WAIT_INDEFINITELY <= max_wait_millisec);
   wait_indefinitely = (MHD_WAIT_INDEFINITELY <= max_wait_millisec);
 
 
-  while (*sent_size != send_buf_size)
+  while (1)
   {
   {
     enum mhd_SocketError res;
     enum mhd_SocketError res;
     size_t last_block_size;
     size_t last_block_size;
@@ -359,11 +359,15 @@ MHD_upgraded_send (struct MHD_UpgradeHandle *MHD_RESTRICT urh,
                          push_data,
                          push_data,
                          &last_block_size);
                          &last_block_size);
     if (mhd_SOCKET_ERR_NO_ERROR == res)
     if (mhd_SOCKET_ERR_NO_ERROR == res)
+    {
       *sent_size += last_block_size;
       *sent_size += last_block_size;
+      if (send_buf_size == *sent_size)
+        break;
+    }
     else if (mhd_SOCKET_ERR_IS_HARD (res))
     else if (mhd_SOCKET_ERR_IS_HARD (res))
     {
     {
       if (0 != *sent_size)
       if (0 != *sent_size)
-        return MHD_SC_OK;
+        break;
 
 
       if (mhd_SOCKET_ERR_REMT_DISCONN == res)
       if (mhd_SOCKET_ERR_REMT_DISCONN == res)
         return MHD_SC_UPGRADED_NET_CONN_CLOSED;
         return MHD_SC_UPGRADED_NET_CONN_CLOSED;