Sfoglia il codice sorgente

signal(SIGPIPE, SIG_IGN);

ithewei 5 anni fa
parent
commit
db37737c37

+ 5 - 0
event/hloop.c

@@ -223,6 +223,11 @@ void hloop_post_event(hloop_t* loop, hevent_t* ev) {
 }
 
 static void hloop_init(hloop_t* loop) {
+#ifdef SIGPIPE
+    // NOTE: if not ignore SIGPIPE, write twice when peer close will lead to exit process by SIGPIPE.
+    signal(SIGPIPE, SIG_IGN);
+#endif
+
     loop->status = HLOOP_STATUS_STOP;
     loop->pid = hv_getpid();
     loop->tid = hv_gettid();

+ 1 - 1
event/nio.c

@@ -531,7 +531,7 @@ enqueue:
         rest.offset = nwrite;
         // NOTE: free in nio_write
         HV_ALLOC(rest.base, rest.len);
-        memcpy(rest.base, (char*)buf, rest.len);
+        memcpy(rest.base, buf, rest.len);
         if (io->write_queue.maxsize == 0) {
             write_queue_init(&io->write_queue, 4);
         }

+ 1 - 1
examples/tcp_chat_server.c

@@ -128,7 +128,7 @@ static void on_accept(hio_t* io) {
 
 int main(int argc, char** argv) {
     if (argc < 2) {
-        printf("Usage: tcp port\n");
+        printf("Usage: %s port\n", argv[0]);
         return -10;
     }
     int port = atoi(argv[1]);

+ 1 - 1
examples/tcp_echo_server.c

@@ -45,7 +45,7 @@ static void on_accept(hio_t* io) {
 
 int main(int argc, char** argv) {
     if (argc < 2) {
-        printf("Usage: tcp port\n");
+        printf("Usage: %s port\n", argv[0]);
         return -10;
     }
     int port = atoi(argv[1]);

+ 1 - 1
examples/tcp_proxy_server.c

@@ -98,7 +98,7 @@ static void on_accept(hio_t* io) {
 
 int main(int argc, char** argv) {
     if (argc < 3) {
-        printf("Usage: tcp port proxy_host:proxy_port\n");
+        printf("Usage: %s port proxy_host:proxy_port\n", argv[0]);
         return -10;
     }
     int port = atoi(argv[1]);

+ 1 - 1
examples/udp_echo_server.c

@@ -30,7 +30,7 @@ static void on_recvfrom(hio_t* io, void* buf, int readbytes) {
 
 int main(int argc, char** argv) {
     if (argc < 2) {
-        printf("Usage: udp port\n");
+        printf("Usage: %s port\n", argv[0]);
         return -10;
     }
     int port = atoi(argv[1]);