diff options
| author | Anton <anton@picapica> | 2016-11-24 21:53:22 +0400 |
|---|---|---|
| committer | Anton <anton@picapica> | 2016-11-24 21:53:22 +0400 |
| commit | eac0690e821f90793a5d55263ecd71a5ad34adcd (patch) | |
| tree | 8b613ea01620013beb028ec6284fd76565d74961 | |
| parent | 78967c09eb9e911572b23a4160ce4b06f83da95e (diff) | |
| download | pica-pica-eac0690e821f90793a5d55263ecd71a5ad34adcd.tar.gz pica-pica-eac0690e821f90793a5d55263ecd71a5ad34adcd.zip | |
check if listener is not NULL before processing
| -rw-r--r-- | PICA_client.c | 30 |
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); + } } |
