summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorRuediger Pluem <rpluem@apache.org>2009-06-11 12:32:59 +0000
committerRuediger Pluem <rpluem@apache.org>2009-06-11 12:32:59 +0000
commitc250b42a487f1a9aadaa32ab33f282e37dde91fd (patch)
treeb4f6b8a2e5ac858992acc124ed7fa8e175fc94aa /modules
parentd0f13e518c64fa625bf4da378667c08992216df2 (diff)
downloadhttpd-c250b42a487f1a9aadaa32ab33f282e37dde91fd.tar.gz
* Close the listening Unix socket of the mod_cgid daemon in the CGI scripts.
PR: 47335 Submitted by: Kornél Pál <kornelpal gmail.com> Reviewed by: rpluem git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@783740 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules')
-rw-r--r--modules/generators/mod_cgid.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/modules/generators/mod_cgid.c b/modules/generators/mod_cgid.c
index 557a237437..8a30511183 100644
--- a/modules/generators/mod_cgid.c
+++ b/modules/generators/mod_cgid.c
@@ -302,6 +302,13 @@ static void cgid_maint(int reason, void *data, apr_wait_t status)
}
#endif
+static apr_status_t close_unix_socket(void *thefd)
+{
+ int fd = (int)((long)thefd);
+
+ return close(fd);
+}
+
/* deal with incomplete reads and signals
* assume you really have to read buf_size bytes
*/
@@ -653,6 +660,9 @@ static int cgid_server(void *data)
}
}
+ apr_pool_cleanup_register(pcgi, (void *)((long)sd),
+ close_unix_socket, close_unix_socket);
+
/* if running as root, switch to configured user/group */
if ((rc = ap_run_drop_privileges(pcgi, ap_server_conf)) != 0) {
return rc;
@@ -1152,13 +1162,6 @@ static int log_script(request_rec *r, cgid_server_conf * conf, int ret,
return ret;
}
-static apr_status_t close_unix_socket(void *thefd)
-{
- int fd = (int)((long)thefd);
-
- return close(fd);
-}
-
static int connect_to_daemon(int *sdptr, request_rec *r,
cgid_server_conf *conf)
{