Browse Source

write_cb after set write_bufsize

ithewei 4 years ago
parent
commit
5e390369ac
1 changed files with 6 additions and 5 deletions
  1. 6 5
      event/nio.c

+ 6 - 5
event/nio.c

@@ -332,9 +332,9 @@ write:
     if (nwrite == 0) {
         goto disconnect;
     }
-    __write_cb(io, buf, nwrite);
     pbuf->offset += nwrite;
     io->write_bufsize -= nwrite;
+    __write_cb(io, buf, nwrite);
     if (nwrite == len) {
         HV_FREE(pbuf->base);
         write_queue_pop_front(&io->write_queue);
@@ -450,11 +450,8 @@ try_write:
         if (nwrite == 0) {
             goto disconnect;
         }
-        __write_cb(io, buf, nwrite);
         if (nwrite == len) {
-            //goto write_done;
-            hrecursive_mutex_unlock(&io->write_mutex);
-            return nwrite;
+            goto write_done;
         }
 enqueue:
         hio_add(io, hio_handle_events, HV_WRITE);
@@ -485,6 +482,10 @@ enqueue:
                 (unsigned int)WRITE_BUFSIZE_HIGH_WATER);
         }
     }
+write_done:
+    if (nwrite > 0) {
+        __write_cb(io, buf, nwrite);
+    }
     hrecursive_mutex_unlock(&io->write_mutex);
     return nwrite;
 write_error: