diff options
Diffstat (limited to 'src/charon/control/interfaces/xml_interface.c')
-rw-r--r-- | src/charon/control/interfaces/xml_interface.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/charon/control/interfaces/xml_interface.c b/src/charon/control/interfaces/xml_interface.c index b295ec201..7710ae19c 100644 --- a/src/charon/control/interfaces/xml_interface.c +++ b/src/charon/control/interfaces/xml_interface.c @@ -291,6 +291,14 @@ static void request(xmlTextReaderPtr reader, char *id, int fd) } /** + * cleanup helper function for open file descriptors + */ +static void closefdp(int *fd) +{ + close(*fd); +} + +/** * read from a opened connection and process it */ static job_requeue_t process(int *fdp) @@ -301,7 +309,7 @@ static job_requeue_t process(int *fdp) xmlTextReaderPtr reader; char *id = NULL, *type = NULL; - pthread_cleanup_push((void*)close, (void*)fd); + pthread_cleanup_push((void*)closefdp, (void*)&fd); pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &oldstate); len = read(fd, buffer, sizeof(buffer)); pthread_setcancelstate(oldstate, NULL); |