summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-admin/gamin/files/gamin-dont-close-fd.patch')
-rw-r--r--app-admin/gamin/files/gamin-dont-close-fd.patch72
1 files changed, 0 insertions, 72 deletions
diff --git a/app-admin/gamin/files/gamin-dont-close-fd.patch b/app-admin/gamin/files/gamin-dont-close-fd.patch
deleted file mode 100644
index d95f599..0000000
--- a/app-admin/gamin/files/gamin-dont-close-fd.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-Index: libgamin/gam_api.c
-===================================================================
-RCS file: /cvs/gnome/gamin/libgamin/gam_api.c,v
-retrieving revision 1.39
-diff -u -p -r1.39 gam_api.c
---- libgamin/gam_api.c 5 Aug 2005 14:06:49 -0000 1.39
-+++ libgamin/gam_api.c 16 Aug 2006 14:59:27 -0000
-@@ -744,7 +744,6 @@ retry:
- return(0);
-
- failed:
-- close(fd);
- return (-1);
- }
-
-@@ -891,39 +890,38 @@ gamin_try_reconnect(GAMDataPtr conn, int
- /*
- * try to reopen a connection to the server
- */
-- close(fd);
- newfd = gamin_connect_unix_socket(socket_name);
--
- free(socket_name);
- if (newfd < 0) {
- return (-1);
- }
-
-- if (newfd != fd) {
-- /*
-- * reuse the same descriptor
-- */
-- ret = dup2(newfd, fd);
-- if (ret < 0) {
-- gam_error(DEBUG_INFO,
-- "Failed to reuse descriptor %d on reconnect\n",
-- fd);
-- close(newfd);
-- return (-1);
-- }
-- }
--
- /*
- * seems we managed to rebuild a connection to the server.
- * start the authentication again and resubscribe all existing
- * monitoring commands.
- */
-- ret = gamin_write_credential_byte(fd);
-+ ret = gamin_write_credential_byte(newfd);
- if (ret != 0) {
-- close(fd);
-+ close(newfd);
- return (-1);
- }
-
-+ /*
-+ * reuse the same descriptor. We never close the original fd, dup2
-+ * atomically overwrites it and closes the original. This way we
-+ * never leave the original fd closed, since that can cause trouble
-+ * if the app keeps the fd around.
-+ */
-+ ret = dup2(newfd, fd);
-+ close(newfd);
-+ if (ret < 0) {
-+ gam_error(DEBUG_INFO,
-+ "Failed to reuse descriptor %d on reconnect\n",
-+ fd);
-+ return (-1);
-+ }
-+
- nb_req = gamin_data_reset(conn, &reqs);
- if (reqs != NULL) {
- for (i = 0; i < nb_req;i++) {