From ec42251715294719e790e4cc48b29f99e74b2a65 Mon Sep 17 00:00:00 2001
From: "Reynaldo H. Verdejo Pinochet" <reynaldo@osg.samsung.com>
Date: Tue, 9 Dec 2014 02:57:02 -0300
Subject: [PATCH] ffserver: reflow start_children()

Signed-off-by: Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
---
 ffserver.c | 40 +++++++++++++++++++++++-----------------
 1 file changed, 23 insertions(+), 17 deletions(-)

diff --git a/ffserver.c b/ffserver.c
index 5ae74066266..d1e66387df2 100644
--- a/ffserver.c
+++ b/ffserver.c
@@ -384,11 +384,29 @@ static int compute_datarate(DataRateData *drd, int64_t count)
 
 static void start_children(FFServerStream *feed)
 {
+    char pathname[1024];
+    char *slash;
+    int i;
+
     if (no_launch)
         return;
 
+   /* replace "ffserver" with "ffmpeg" in the path of current
+    * program. Ignore user provided path */
+    av_strlcpy(pathname, my_program_name, sizeof(pathname));
+
+    slash = strrchr(pathname, '/');
+    if (!slash)
+        slash = pathname;
+    else
+        slash++;
+    strcpy(slash, "ffmpeg");
+
     for (; feed; feed = feed->next) {
-        if (feed->child_argv && !feed->pid) {
+
+        if (!feed->child_argv || feed->pid)
+            continue;
+
             feed->pid_start = time(0);
 
             feed->pid = fork();
@@ -397,21 +415,11 @@ static void start_children(FFServerStream *feed)
                 http_log("Unable to create children\n");
                 exit(1);
             }
-            if (!feed->pid) {
+
+            if (feed->pid)
+                continue;
+
                 /* In child */
-                char pathname[1024];
-                char *slash;
-                int i;
-
-                /* replace "ffserver" with "ffmpeg" in the path of current
-                 * program. Ignore user provided path */
-                av_strlcpy(pathname, my_program_name, sizeof(pathname));
-                slash = strrchr(pathname, '/');
-                if (!slash)
-                    slash = pathname;
-                else
-                    slash++;
-                strcpy(slash, "ffmpeg");
 
                 http_log("Launch command line: ");
                 http_log("%s ", pathname);
@@ -436,8 +444,6 @@ static void start_children(FFServerStream *feed)
                 execvp(pathname, feed->child_argv);
 
                 _exit(1);
-            }
-        }
     }
 }
 
-- 
GitLab