From 68fa46f017664617eb94b16fdeaa9c804b34fc1c Mon Sep 17 00:00:00 2001
From: James <james@sourcefabric-DX4840.(none)>
Date: Mon, 12 Mar 2012 16:38:18 -0400
Subject: [PATCH] CC-3415: Live Stream: Disconnect all input.harbor connections
 before  terminating the process

- call prepare termiate on monit-restart()
---
 python_apps/pypo/airtime-playout-init-d          |  1 +
 .../pypo/liquidsoap_scripts/ls_script.liq        | 16 ++++++++--------
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/python_apps/pypo/airtime-playout-init-d b/python_apps/pypo/airtime-playout-init-d
index 85bd9f198..688e4e790 100755
--- a/python_apps/pypo/airtime-playout-init-d
+++ b/python_apps/pypo/airtime-playout-init-d
@@ -65,6 +65,7 @@ monit_restart() {
         start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE0
         rm -f $PIDFILE0
         
+        python /usr/lib/airtime/pypo/bin/liquidsoap_scripts/liquidsoap_prepare_terminate.py
         start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE1
         rm -f $PIDFILE1
         
diff --git a/python_apps/pypo/liquidsoap_scripts/ls_script.liq b/python_apps/pypo/liquidsoap_scripts/ls_script.liq
index 269abeee5..e0a337dc7 100644
--- a/python_apps/pypo/liquidsoap_scripts/ls_script.liq
+++ b/python_apps/pypo/liquidsoap_scripts/ls_script.liq
@@ -70,7 +70,7 @@ def update_source_status(sourcename, status) =
     log("/usr/lib/airtime/pypo/bin/liquidsoap_scripts/notify.sh --source-name=#{sourcename} --source-status=#{status}")
 end
 
-def live_dj_connect() =
+def live_dj_connect(header) =
     update_source_status("live_dj", true)
 end
 
@@ -78,7 +78,7 @@ def live_dj_disconnect() =
     update_source_status("live_dj", false)
 end
 
-def master_dj_connect() =
+def master_dj_connect(header) =
     update_source_status("master_dj", true)
 end
 
@@ -94,7 +94,7 @@ def check_master_dj_client(user,password) =
         ret = list.hd(ret)
         #return true to let the client transmit data, or false to tell harbor to decline
         if (ret == "True") then
-            master_dj_connect()
+            #master_dj_connect()
             true
         else
             false
@@ -108,7 +108,7 @@ def check_dj_client(user,password) =
         ret = list.hd(ret)
         #return true to let the client transmit data, or false to tell harbor to decline
         if (ret == "True") then
-            live_dj_connect()
+            #live_dj_connect()
             true
         else
             false
@@ -118,20 +118,20 @@ end
 def append_dj_inputs(master_harbor_input_port, master_harbor_input_mount_point, dj_harbor_input_port, dj_harbor_input_mount_point, s) =
     if master_harbor_input_port != 0 and master_harbor_input_mount_point != "" and dj_harbor_input_port != 0 and dj_harbor_input_mount_point != "" then
         master_dj = input.harbor(id="master_harbor", master_harbor_input_mount_point, port=master_harbor_input_port, auth=check_master_dj_client, 
-                    max=40., on_disconnect=master_dj_disconnect)
+                    max=40., on_connect=master_dj_connect, on_disconnect=master_dj_disconnect)
         dj_live = input.harbor(id="live_dj_harbor", dj_harbor_input_mount_point, port=dj_harbor_input_port, auth=check_dj_client,
-                    max=40., on_disconnect=live_dj_disconnect)
+                    max=40., on_connect=live_dj_connect, on_disconnect=live_dj_disconnect)
         ignore(output.dummy(master_dj, fallible=true))
         ignore(output.dummy(dj_live, fallible=true))
         switch(id="master_dj_switch", track_sensitive=false, transitions=[transition, transition, transition], [({!master_dj_enabled},master_dj), ({!live_dj_enabled},dj_live), ({true}, s)])
     elsif master_harbor_input_port != 0 and master_harbor_input_mount_point != "" then
         master_dj = input.harbor(id="master_harbor", master_harbor_input_mount_point, port=master_harbor_input_port, auth=check_master_dj_client,
-                     max=40., on_disconnect=master_dj_disconnect)
+                     max=40., on_connect=master_dj_connect, on_disconnect=master_dj_disconnect)
         ignore(output.dummy(master_dj, fallible=true))
         switch(id="master_dj_switch", track_sensitive=false, transitions=[transition, transition], [({!master_dj_enabled},master_dj), ({true}, s)])
     elsif dj_harbor_input_port != 0 and dj_harbor_input_mount_point != "" then
         dj_live = input.harbor(id="live_dj_harbor", dj_harbor_input_mount_point, port=dj_harbor_input_port, auth=check_dj_client,
-                    max=40., on_disconnect=live_dj_disconnect)
+                    max=40., on_connect=live_dj_connect, on_disconnect=live_dj_disconnect)
         ignore(output.dummy(dj_live, fallible=true))
         switch(id="live_dj_switch", track_sensitive=false, transitions=[transition, transition], [({!live_dj_enabled},dj_live), ({true}, s)])
     else