[oe-commits] Roy Li : quagga: close the stdout/stderr as in other daemons

git at git.openembedded.org git at git.openembedded.org
Fri Feb 21 16:05:38 UTC 2014


Module: meta-openembedded.git
Branch: master-next
Commit: caad7ae4d8d09a63aea25b2e3ad8bb72d6ba5aa5
URL:    http://git.openembedded.org/?p=meta-openembedded.git&a=commit;h=caad7ae4d8d09a63aea25b2e3ad8bb72d6ba5aa5

Author: Roy Li <rongqing.li at windriver.com>
Date:   Wed Feb 19 15:38:03 2014 +0800

quagga: close the stdout/stderr as in other daemons

Once babald becomes a background daemon, it should not output information to
stdout, so need to close stdout.

In fact, other daemons close their stdout when they run into background, like
ospfd, isisd and bgpd, by calling daemon() which is in lib/daemon.c

Closing the stdout can fix a tee hang issue { #/usr/sbin/babeld -d |tee tmp }

Signed-off-by: Roy Li <rongqing.li at windriver.com>
Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>

---

 ...ose-the-stdout-stderr-as-in-other-daemons.patch | 50 ++++++++++++++++++++++
 .../recipes-protocols/quagga/quagga_0.99.21.bb     |  1 +
 2 files changed, 51 insertions(+)

diff --git a/meta-networking/recipes-protocols/quagga/files/babel-close-the-stdout-stderr-as-in-other-daemons.patch b/meta-networking/recipes-protocols/quagga/files/babel-close-the-stdout-stderr-as-in-other-daemons.patch
new file mode 100644
index 0000000..c2757a2
--- /dev/null
+++ b/meta-networking/recipes-protocols/quagga/files/babel-close-the-stdout-stderr-as-in-other-daemons.patch
@@ -0,0 +1,50 @@
+From ba71f768e6dbb1f2ac72ed3bd880bff75a48d345 Mon Sep 17 00:00:00 2001
+From: Roy Li <rongqing.li at windriver.com>
+Date: Wed, 19 Feb 2014 14:13:40 +0800
+Subject: [PATCH] babeld: close stdout once the background daemon is created
+
+Upstream-Status: pending
+
+Once babald becomes a background daemon, it should not output information to
+stdout, so need to close stdout.
+
+In fact, other daemons close their stdout when they run into background, like
+ospfd, isisd and bgpd, by calling daemon() which is in lib/daemon.c
+
+Closing the stdout can fix a tee hang issue { #/usr/sbin/babeld -d |tee tmp }
+
+Signed-off-by: Roy Li <rongqing.li at windriver.com>
+---
+ babeld/util.c |   10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/babeld/util.c b/babeld/util.c
+index 011f382..76203bc 100644
+--- a/babeld/util.c
++++ b/babeld/util.c
+@@ -425,7 +425,7 @@ uchar_to_in6addr(struct in6_addr *dest, const unsigned char *src)
+ int
+ daemonise()
+ {
+-    int rc;
++    int rc, fd;
+ 
+     fflush(stdout);
+     fflush(stderr);
+@@ -441,5 +441,13 @@ daemonise()
+     if(rc < 0)
+         return -1;
+ 
++    fd = open("/dev/null", O_RDWR, 0);
++    if (fd != -1)
++    {
++        dup2(fd, STDOUT_FILENO);
++        if (fd > 2)
++            close(fd);
++    }
++
+     return 1;
+ }
+-- 
+1.7.10.4
+
diff --git a/meta-networking/recipes-protocols/quagga/quagga_0.99.21.bb b/meta-networking/recipes-protocols/quagga/quagga_0.99.21.bb
index ae93952..db2a67b 100644
--- a/meta-networking/recipes-protocols/quagga/quagga_0.99.21.bb
+++ b/meta-networking/recipes-protocols/quagga/quagga_0.99.21.bb
@@ -5,6 +5,7 @@ PR = "${INC_PR}.0"
 SRC_URI += "file://0001-doc-fix-makeinfo-errors-and-one-warning.patch \
             file://lingering-IP-address-after-deletion-BZ-486.patch \
             file://build-fix-extract.pl-for-cross-compilation.patch \
+            file://babel-close-the-stdout-stderr-as-in-other-daemons.patch \
 "
 
 SRC_URI[quagga-0.99.21.md5sum] = "99840adbe57047c90dfba6b6ed9aec7f"



More information about the Openembedded-commits mailing list