summaryrefslogtreecommitdiffstats
path: root/service/instance.c
AgeCommit message (Collapse)Author
2015-07-07service: if logging start app with LD_PRELOAD & lib for line bufferingRafał Miłecki
Using pipe automatically switches service to block buffering which kind of breaks our logging. We won't get anything from stdout FD until the buffer gets filled fully or the service exits. This makes log messages appear with an unwanted delay. This change adds a tiny libsetlbf.so switching stdout to line buffering and uses this lib for every logging-enabled service started by procd. We don't need any extra change for stderr as it's unbuffered by default. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Modified to use no buffering to align with stderr. Several cleanups. Signed-off-by: Steven Barth <steven@midlink.org>
2015-06-14service: reorder function to avoid forward declarationFelix Fietkau
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2015-06-14service: close instance pipe fd on restart.Yousong Zhou
Otherwise we hit max number of fd limit (1024) and instances fail to start with the following errors in syslog Sun Jun 14 01:27:38 2015 daemon.warn procd: pipe() failed: 24 (Too many open files) Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2015-06-14service: dump respawn params in the same order as when passed in.Yousong Zhou
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2015-06-14service: optimize relaying stdio output of daemons a bit.Yousong Zhou
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2015-05-05instance: handle setgid() before setuid()Jo-Philipp Wich
When attempting to run a service with an unprivileged user and group id procd, the following error might occur: procd: failed to set uid:1000, gid:1000 This is due to the fact that procd first performs the setuid(), then the setgid() call. Usually there no sufficient permissions after a setuid() anymore to change the effective group id of the process. Refactor the code to: * Swap the invocations (first gid, then uid) * Don't set user or group id if it is 0 * Handle errors independently and make them more verbose Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2015-04-19instance: avoid dumping invalid service instances - prevents a potential crashFelix Fietkau
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2015-03-28properly handle return codesJohn Crispin
Signed-off-by: John Crispin <blogic@openwrt.org>
2015-03-23procd can now start jailed processesJohn Crispin
Signed-off-by: John Crispin <blogic@openwrt.org>
2015-02-27service: rename variables / struct members called stdout, stderr to avoid ↵Felix Fietkau
conflicts with system defines Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2015-02-26service: don't use stdio log channelJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2015-02-26procd: support relayoing daemon stdout/stderr to syslogJo-Philipp Wich
This commit adds support to procd for relaying stdout and stderr streams to the system log. That is mainly useful for services not using syslog, e.g. uhttpd. Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2014-09-08instances can now start as a !root userJohn Crispin
Signed-off-by: John Crispin <blogic@openwrt.org>
2014-08-29add .data to instance_dump()John Crispin
Signed-off-by: John Crispin <blogic@openwrt.org>
2014-07-02service: fix trigger related double-freeFelix Fietkau
The memdup is unnecessary, because the data is contained inside in->config. Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2014-07-02instance: allow filling "data" with fields of arbitrary typeFelix Fietkau
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2014-06-06allow instances to report errors. if an error is set, the instance wont be ↵John Crispin
started Signed-off-by: John Crispin <blogic@openwrt.org>
2014-06-05send ubus_notify events when servers and instances change stateJohn Crispin
Signed-off-by: John Crispin <blogic@openwrt.org>
2014-06-05allow instances to register ubus object that should be watchedJohn Crispin
Signed-off-by: John Crispin <blogic@openwrt.org>
2014-05-25service: use blob_memdup()Felix Fietkau
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2014-02-24instance: improve portability of setting resource limitsFelix Fietkau
the data type varies for different implementations Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2013-12-18procd: fix service file trackingJo-Philipp Wich
The instance_config_move() function in the procd instance managing code is missing a blobmsg_list_move() call to update the tracked file items with the newly calculated checksums in case of a file change. Without that change, services are always reloaded after the first change to a tracked file regardless of whether there are any subsequent changes or not. Add a missing instance of blobmsg_list_free() as well. Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2013-12-09procd: set resource limits for service instancesUlrich Weber
useful to enable core dumps or set resource limits Signed-off-by: Ulrich Weber <uw@xyne.com>
2013-11-19make ue of the md5.c inside libuboxJohn Crispin
Signed-off-by: John Crispin <blogic@openwrt.org>
2013-11-15procd: Allow process respawning foreverHelmut Schaa
Use respawn_retry==0 as indication to respawn a process forever. Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com> Signed-off-by: John Crispin <blogic@openwrt.org>
2013-11-15debloat and reorganize codeJohn Crispin
split app into procd and init binaries remove log support, this is an external service now Signed-off-by: John Crispin <blogic@openwrt.org>