diff options
Diffstat (limited to 'PICA_client.c')
| -rw-r--r-- | PICA_client.c | 38 |
1 files changed, 13 insertions, 25 deletions
diff --git a/PICA_client.c b/PICA_client.c index 63ed3eb..b1ff144 100644 --- a/PICA_client.c +++ b/PICA_client.c @@ -1904,13 +1904,12 @@ static void fdset_add(fd_set *fds, int fd, int *max) *max = fd; } -int PICA_event_loop(struct PICA_c2n **connections, struct PICA_listener **listeners, int timeout) +int PICA_event_loop(struct PICA_c2n **connections, int timeout) { fd_set rfds, wfds; struct timeval tv; int ret, nfds = 0; struct PICA_c2n **ic2n; - struct PICA_listener **ilst; //puts("PICA_event_loop");//debug @@ -1920,14 +1919,6 @@ int PICA_event_loop(struct PICA_c2n **connections, struct PICA_listener **listen FD_ZERO(&rfds); FD_ZERO(&wfds); - ilst = listeners; - - while(ilst && *ilst) - { - fdset_add(&rfds, (*ilst)->sck_listener, &nfds); - ilst++; - } - ic2n = connections; while(ic2n && *ic2n) @@ -1942,6 +1933,8 @@ int PICA_event_loop(struct PICA_c2n **connections, struct PICA_listener **listen || (*ic2n)->state == PICA_C2N_STATE_WAITINGTLS) fdset_add(&wfds, (*ic2n)->sck_comm, &nfds); + fdset_add(&rfds, (*ic2n)->directc2c_listener->sck_listener, &nfds); + ic2c = (*ic2n)->chan_list_head; while(ic2c) @@ -1980,21 +1973,6 @@ int PICA_event_loop(struct PICA_c2n **connections, struct PICA_listener **listen //processing listeners, c2n and c2c connections - ilst = listeners; - - while(ilst && *ilst) - { - ret = process_listener(*ilst, &rfds); - - if (ret != PICA_OK) - { - callbacks.listener_error_cb(*ilst, ret); - PICA_close_listener(*ilst); - } - - ilst++; - } - ic2n = connections; while(ic2n && *ic2n) @@ -2018,6 +1996,16 @@ int PICA_event_loop(struct PICA_c2n **connections, struct PICA_listener **listen { struct PICA_c2c *kill_ptr = 0; + //processing listener associated with current c2n + ret = process_listener((*ic2n)->directc2c_listener, &rfds); + + if (ret != PICA_OK) + { + callbacks.listener_error_cb((*ic2n)->directc2c_listener, ret); + PICA_close_listener((*ic2n)->directc2c_listener); + } + + ic2c = (*ic2n)->chan_list_head; //processing c2c connections associated with current c2n |
