summaryrefslogtreecommitdiff
path: root/bus/activation.c
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2014-11-06 20:59:57 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2014-11-06 20:59:57 +0000
commit51a609c8ba56b77aac23a2aa4be367a37adfda13 (patch)
tree6c89955fef7a75e571a43d5cb6ec055ec9cdfe55 /bus/activation.c
parentcec244b5961e64e85d2f59fde40ecb1a4e9c93cc (diff)
parentfc50a44527cf083da913533360ce4644cd69b243 (diff)
downloaddbus-51a609c8ba56b77aac23a2aa4be367a37adfda13.tar.gz
Merge branch 'dbus-1.8'
Conflicts: NEWS configure.ac
Diffstat (limited to 'bus/activation.c')
-rw-r--r--bus/activation.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/bus/activation.c b/bus/activation.c
index bdf9cf3d..ffedf4c5 100644
--- a/bus/activation.c
+++ b/bus/activation.c
@@ -1688,6 +1688,31 @@ out:
return retval;
}
+static void
+child_setup (void *user_data)
+{
+#ifdef DBUS_UNIX
+ BusActivation *activation = user_data;
+ DBusRLimit *initial_fd_limit;
+ DBusError error;
+
+ dbus_error_init (&error);
+ initial_fd_limit = bus_context_get_initial_fd_limit (activation->context);
+
+ if (initial_fd_limit != NULL &&
+ !_dbus_rlimit_restore_fd_limit (initial_fd_limit, &error))
+ {
+ /* unfortunately we don't actually know the service name here */
+ bus_context_log (activation->context,
+ DBUS_SYSTEM_LOG_INFO,
+ "Failed to reset fd limit before activating "
+ "service: %s: %s",
+ error.name, error.message);
+ }
+#endif
+}
+
+
dbus_bool_t
bus_activation_activate_service (BusActivation *activation,
DBusConnection *connection,
@@ -2121,7 +2146,8 @@ bus_activation_activate_service (BusActivation *activation,
service_name,
argv,
envp,
- NULL, activation,
+ child_setup,
+ activation,
&tmp_error))
{
_dbus_verbose ("Failed to spawn child\n");