]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/gssd/gssd_main_loop.c
rpc.gssd: close upcall pipe on POLLHUP
[nfs-utils.git] / utils / gssd / gssd_main_loop.c
index b06c223294f2f0aadc928ba8d73d6b711e164ba0..c18e12c37c60cba220424c47ee1cafb0e8adb00c 100644 (file)
@@ -78,8 +78,10 @@ scan_poll_results(int ret)
        {
                i = clp->gssd_poll_index;
                if (i >= 0 && pollarray[i].revents) {
-                       if (pollarray[i].revents & POLLHUP)
+                       if (pollarray[i].revents & POLLHUP) {
+                               clp->gssd_close_me = 1;
                                dir_changed = 1;
+                       }
                        if (pollarray[i].revents & POLLIN)
                                handle_gssd_upcall(clp);
                        pollarray[clp->gssd_poll_index].revents = 0;
@@ -89,8 +91,10 @@ scan_poll_results(int ret)
                }
                i = clp->krb5_poll_index;
                if (i >= 0 && pollarray[i].revents) {
-                       if (pollarray[i].revents & POLLHUP)
+                       if (pollarray[i].revents & POLLHUP) {
+                               clp->krb5_close_me = 1;
                                dir_changed = 1;
+                       }
                        if (pollarray[i].revents & POLLIN)
                                handle_krb5_upcall(clp);
                        pollarray[clp->krb5_poll_index].revents = 0;
@@ -98,17 +102,6 @@ scan_poll_results(int ret)
                        if (!ret)
                                break;
                }
-               i = clp->spkm3_poll_index;
-               if (i >= 0 && pollarray[i].revents) {
-                       if (pollarray[i].revents & POLLHUP)
-                               dir_changed = 1;
-                       if (pollarray[i].revents & POLLIN)
-                               handle_spkm3_upcall(clp);
-                       pollarray[clp->spkm3_poll_index].revents = 0;
-                       ret--;
-                       if (!ret)
-                               break;
-               }
        }
 };