summaryrefslogtreecommitdiffstats
path: root/PICA_client.c
diff options
context:
space:
mode:
Diffstat (limited to 'PICA_client.c')
-rw-r--r--PICA_client.c38
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