summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton <anton@picapica>2016-11-24 21:53:22 +0400
committerAnton <anton@picapica>2016-11-24 21:53:22 +0400
commiteac0690e821f90793a5d55263ecd71a5ad34adcd (patch)
tree8b613ea01620013beb028ec6284fd76565d74961
parent78967c09eb9e911572b23a4160ce4b06f83da95e (diff)
downloadpica-pica-eac0690e821f90793a5d55263ecd71a5ad34adcd.tar.gz
pica-pica-eac0690e821f90793a5d55263ecd71a5ad34adcd.zip
check if listener is not NULL before processing
-rw-r--r--PICA_client.c30
1 files changed, 18 insertions, 12 deletions
diff --git a/PICA_client.c b/PICA_client.c
index 416e469..3567a91 100644
--- a/PICA_client.c
+++ b/PICA_client.c
@@ -2035,15 +2035,18 @@ int PICA_event_loop(struct PICA_c2n **connections, int timeout)
|| (*ic2n)->state == PICA_C2N_STATE_WAITINGTLS)
fdset_add(&wfds, (*ic2n)->sck_comm, &nfds);
- fdset_add(&rfds, (*ic2n)->directc2c_listener->sck_listener, &nfds);
+ if ((*ic2n)->directc2c_listener)
+ {
+ fdset_add(&rfds, (*ic2n)->directc2c_listener->sck_listener, &nfds);
- ilstcon = (*ic2n)->directc2c_listener->accepted_connections;
+ ilstcon = (*ic2n)->directc2c_listener->accepted_connections;
- while (ilstcon)
- {
- fdset_add(&rfds, ilstcon->sck, &nfds);
- fdset_add(&wfds, ilstcon->sck, &nfds);
- ilstcon = ilstcon->next;
+ while (ilstcon)
+ {
+ fdset_add(&rfds, ilstcon->sck, &nfds);
+ fdset_add(&wfds, ilstcon->sck, &nfds);
+ ilstcon = ilstcon->next;
+ }
}
ic2c = (*ic2n)->chan_list_head;
@@ -2108,12 +2111,15 @@ int PICA_event_loop(struct PICA_c2n **connections, int timeout)
struct PICA_c2c *kill_ptr = 0;
//processing listener associated with current c2n
- ret = process_listener((*ic2n)->directc2c_listener, &rfds, &wfds);
-
- if (ret != PICA_OK)
+ if ((*ic2n)->directc2c_listener)
{
- callbacks.listener_error_cb((*ic2n)->directc2c_listener, ret);
- PICA_close_listener((*ic2n)->directc2c_listener);
+ ret = process_listener((*ic2n)->directc2c_listener, &rfds, &wfds);
+
+ if (ret != PICA_OK)
+ {
+ callbacks.listener_error_cb((*ic2n)->directc2c_listener, ret);
+ PICA_close_listener((*ic2n)->directc2c_listener);
+ }
}