Quellcode durchsuchen

fix #204: not close udp fd

ithewei vor 3 Jahren
Ursprung
Commit
644a78d082
1 geänderte Dateien mit 9 neuen und 3 gelöschten Zeilen
  1. 9 3
      event/nio.c

+ 9 - 3
event/nio.c

@@ -328,7 +328,9 @@ read:
     return;
 read_error:
 disconnect:
-    hio_close(io);
+    if (io->io_type & HIO_TYPE_SOCK_STREAM) {
+        hio_close(io);
+    }
 }
 
 static void nio_write(hio_t* io) {
@@ -382,7 +384,9 @@ write:
 write_error:
 disconnect:
     hrecursive_mutex_unlock(&io->write_mutex);
-    hio_close(io);
+    if (io->io_type & HIO_TYPE_SOCK_STREAM) {
+        hio_close(io);
+    }
 }
 
 static void hio_handle_events(hio_t* io) {
@@ -538,7 +542,9 @@ disconnect:
      * if hio_close_sync, we have to be very careful to avoid using freed resources.
      * But if hio_close_async, we do not have to worry about this.
      */
-    hio_close_async(io);
+    if (io->io_type & HIO_TYPE_SOCK_STREAM) {
+        hio_close_async(io);
+    }
     return nwrite < 0 ? nwrite : -1;
 }