@@ -62,35 +62,39 @@ int loop(void *arg)
6262 int nevents = ff_epoll_wait (epfd , events , MAX_EVENTS , 0 );
6363 int i ;
6464
65- for (i = 0 ; i < nevents ; ++ i ) {
65+ for (i = 0 ; i < nevents ; ++ i ) {
6666 /* Handle new connect */
6767 if (events [i ].data .fd == sockfd ) {
6868 int nclientfd = ff_accept (sockfd , NULL , NULL );
69- assert (nclientfd > 0 );
69+ if (nclientfd < 0 ) {
70+ printf ("ff_accept failed:%d, %s\n" , errno , strerror (errno ));
71+ continue ;
72+ }
73+
7074 /* Add to event list */
71- ev .data .fd = nclientfd ;
72- ev .events = EPOLLIN ;
73- assert (ff_epoll_ctl (epfd , EPOLL_CTL_ADD , nclientfd , & ev ) == 0 );
74- //fprintf(stderr, "A new client connected to the server..., fd:%d\n", nclientfd);
75+ ev .data .fd = nclientfd ;
76+ ev .events = EPOLLIN ;
77+ assert (ff_epoll_ctl (epfd , EPOLL_CTL_ADD , nclientfd , & ev ) == 0 );
78+ //printf( "A new client connected to the server..., fd:%d\n", nclientfd);
7579 } else {
7680 if (events [i ].events & EPOLLERR ) {
7781 /* Simply close socket */
78- ff_epoll_ctl (epfd , EPOLL_CTL_DEL , events [i ].data .fd , NULL );
82+ ff_epoll_ctl (epfd , EPOLL_CTL_DEL , events [i ].data .fd , NULL );
7983 ff_close (events [i ].data .fd );
80- //fprintf(stderr, "A client has left the server...,fd:%d\n", events[i].data.fd);
84+ //printf( "A client has left the server...,fd:%d\n", events[i].data.fd);
8185 } else if (events [i ].events & EPOLLIN ) {
8286 char buf [256 ];
8387 size_t readlen = ff_read ( events [i ].data .fd , buf , sizeof (buf ));
84- //fprintf(stderr, "bytes are available to read..., readlen:%d, fd:%d\n", readlen, events[i].data.fd);
85- if (readlen > 0 ){
88+ //printf( "bytes are available to read..., readlen:%d, fd:%d\n", readlen, events[i].data.fd);
89+ if (readlen > 0 ) {
8690 ff_write ( events [i ].data .fd , html , sizeof (html ));
87- } else {
88- ff_epoll_ctl (epfd , EPOLL_CTL_DEL , events [i ].data .fd , NULL );
89- ff_close ( events [i ].data .fd );
90- //fprintf(stderr, "A client has left the server...,fd:%d\n", events[i].data.fd);
91- }
91+ } else {
92+ ff_epoll_ctl (epfd , EPOLL_CTL_DEL , events [i ].data .fd , NULL );
93+ ff_close ( events [i ].data .fd );
94+ //printf( "A client has left the server...,fd:%d\n", events[i].data.fd);
95+ }
9296 } else {
93- fprintf ( stderr , "unknown event: %8.8X\n" , events [i ].events );
97+ printf ( "unknown event: %8.8X\n" , events [i ].events );
9498 }
9599 }
96100 }
@@ -127,13 +131,11 @@ int main(int argc, char * argv[])
127131 printf ("ff_listen failed\n" );
128132 exit (1 );
129133 }
130-
134+
131135 assert ((epfd = ff_epoll_create (0 )) > 0 );
132136 ev .data .fd = sockfd ;
133137 ev .events = EPOLLIN ;
134138 ff_epoll_ctl (epfd , EPOLL_CTL_ADD , sockfd , & ev );
135139 ff_run (loop , NULL );
136140 return 0 ;
137141}
138-
139-
0 commit comments