Fix pollfd update bug in thread_manage apps
authorDavid Goulet <david.goulet@polymtl.ca>
Tue, 6 Sep 2011 21:10:42 +0000 (17:10 -0400)
committerDavid Goulet <david.goulet@polymtl.ca>
Tue, 6 Sep 2011 21:10:42 +0000 (17:10 -0400)
When updating the pollfd array, the wrong pollfd size was used so at
multiple UST registration at the same time the socket was not added to
the poll list.

Signed-off-by: David Goulet <david.goulet@polymtl.ca>
ltt-sessiond/main.c

index 85ac06be9e32c2967417513b7902d2b226b303ba..c9522d697f5cc698217b94dc495312af7ee9c7d2 100644 (file)
@@ -899,7 +899,7 @@ error:
  */
 static void *thread_manage_apps(void *data)
 {
-       int i, ret, count;
+       int i, ret, current_nb_fd;
        unsigned int nb_fd = 2;
        int update_poll_flag = 1;
        struct pollfd *pollfd = NULL;
@@ -908,6 +908,7 @@ static void *thread_manage_apps(void *data)
        DBG("[thread] Manage application started");
 
        ust_cmd.sock = -1;
+       current_nb_fd = nb_fd;
 
        while (1) {
                /* See if we have a valid socket to add to pollfd */
@@ -918,7 +919,7 @@ static void *thread_manage_apps(void *data)
 
                /* The pollfd struct must be updated */
                if (update_poll_flag) {
-                       ret = update_apps_cmd_pollfd(nb_fd, ARRAY_SIZE(pollfd), &pollfd);
+                       ret = update_apps_cmd_pollfd(nb_fd, current_nb_fd, &pollfd);
                        if (ret < 0) {
                                /* malloc failed so we quit */
                                goto error;
@@ -978,8 +979,8 @@ static void *thread_manage_apps(void *data)
                        }
                }
 
-               count = nb_fd;
-               for (i = 2; i < count; i++) {
+               current_nb_fd = nb_fd;
+               for (i = 2; i < current_nb_fd; i++) {
                        /* Apps socket is closed/hungup */
                        switch (pollfd[i].revents) {
                        case POLLERR:
@@ -994,7 +995,7 @@ static void *thread_manage_apps(void *data)
                        }
                }
 
-               if (nb_fd != count) {
+               if (nb_fd != current_nb_fd) {
                        update_poll_flag = 1;
                }
        }
This page took 0.034793 seconds and 4 git commands to generate.