Fix: LPOLLHUP and LPOLLERR when there is still data in pipe/socket
[lttng-tools.git] / src / bin / lttng-relayd / health-relayd.c
index 402b44277777b07a7ccd9e49d47e69e1049549d7..0deb3740acaa203a693c134977a3bb883d637886 100644 (file)
@@ -149,7 +149,7 @@ static
 int setup_health_path(void)
 {
        int is_root, ret = 0;
-       char *home_path = NULL, *rundir = NULL, *relayd_path;
+       char *home_path = NULL, *rundir = NULL, *relayd_path = NULL;
 
        ret = parse_health_env();
        if (ret) {
@@ -221,6 +221,7 @@ int setup_health_path(void)
 
 end:
        free(rundir);
+       free(relayd_path);
        return ret;
 }
 
@@ -343,9 +344,14 @@ restart:
 
                        /* Event on the registration socket */
                        if (pollfd == sock) {
-                               if (revents & (LPOLLERR | LPOLLHUP | LPOLLRDHUP)) {
+                               if (revents & LPOLLIN) {
+                                       continue;
+                               } else if (revents & (LPOLLERR | LPOLLHUP | LPOLLRDHUP)) {
                                        ERR("Health socket poll error");
                                        goto error;
+                               } else {
+                                       ERR("Unexpected poll events %u for sock %d", revents, pollfd);
+                                       goto error;
                                }
                        }
                }
This page took 0.024007 seconds and 4 git commands to generate.