From cd10eef059e9d9c34c927f3ac53ac43f4a9716c1 Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Sat, 06 Jun 2020 18:20:40 +0800
Subject: [PATCH] add TLV client database save and send support

---
 ch5_multiplexing/socket_server_epoll.c |   12 +++++++-----
 1 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/ch5_multiplexing/socket_server_epoll.c b/ch5_multiplexing/socket_server_epoll.c
index 5c9b2b2..6e69fcd 100644
--- a/ch5_multiplexing/socket_server_epoll.c
+++ b/ch5_multiplexing/socket_server_epoll.c
@@ -99,7 +99,8 @@
 	return -3;
     }
 
-    event.events = EPOLLIN|EPOLLET;
+    //event.events = EPOLLIN|EPOLLET;
+    event.events = EPOLLIN;
     event.data.fd = listenfd;
 
     if( epoll_ctl(epollfd, EPOLL_CTL_ADD, listenfd, &event) < 0)
@@ -130,7 +131,7 @@
 	    if ( (event_array[i].events&EPOLLERR) || (event_array[i].events&EPOLLHUP) )
 	    {
 		printf("epoll_wait get error on fd[%d]: %s\n", event_array[i].data.fd, strerror(errno));
-		epoll_ctl(epollfd, EPOLL_CTL_ADD, event_array[i].data.fd, &event);
+		epoll_ctl(epollfd, EPOLL_CTL_DEL, event_array[i].data.fd, NULL);
 		close(event_array[i].data.fd);
 	    }
 
@@ -144,7 +145,8 @@
 		}
 
 		event.data.fd = connfd;
-		event.events =  EPOLLIN|EPOLLET;
+		//event.events =  EPOLLIN|EPOLLET;
+		event.events =  EPOLLIN;
 		if( epoll_ctl(epollfd, EPOLL_CTL_ADD, connfd, &event) < 0 )
 		{
 		    printf("epoll add client socket failure: %s\n", strerror(errno));
@@ -158,7 +160,7 @@
                 if( (rv=read(event_array[i].data.fd, buf, sizeof(buf))) <= 0)
 		{
                     printf("socket[%d] read failure or get disconncet and will be removed.\n", event_array[i].data.fd);
-		    epoll_ctl(epollfd, EPOLL_CTL_ADD, event_array[i].data.fd, &event);
+		    epoll_ctl(epollfd, EPOLL_CTL_DEL, event_array[i].data.fd, NULL);
 		    close(event_array[i].data.fd);
 		    continue;
 		}
@@ -173,7 +175,7 @@
                     if( write(event_array[i].data.fd, buf, rv) < 0 )
 		    {
 		        printf("socket[%d] write failure: %s\n", event_array[i].data.fd, strerror(errno));
-		       	epoll_ctl(epollfd, EPOLL_CTL_ADD, event_array[i].data.fd, &event);
+		       	epoll_ctl(epollfd, EPOLL_CTL_DEL, event_array[i].data.fd, NULL);
 		       	close(event_array[i].data.fd);
 		    } 
 		} 

--
Gitblit v1.9.1