]> matita.cs.unibo.it Git - helm.git/commitdiff
ensure connections get closed after having been served
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Mon, 29 May 2006 17:24:43 +0000 (17:24 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Mon, 29 May 2006 17:24:43 +0000 (17:24 +0000)
helm/software/daemons/graphs/tools/drawGraph.ml
helm/software/daemons/graphs/tools/uriSetQueue.ml

index c17902fbc551dd85e92f0a4a5315fee500d978f7..f7c8174965c7b3f5fc190faa19b58ee226980d92 100644 (file)
@@ -56,7 +56,7 @@ let string_of_exit_status = function
   | Unix.WSIGNALED n -> sprintf "Process killed by signal %d" n
   | Unix.WSTOPPED n -> sprintf "Process stopped by signal %d" n
 in
-let callback (req: Http_types.request) outchan =
+let callback ((req: Http_types.request), outchan) =
   try
     (match req#path with
     | "/draw" ->
@@ -90,6 +90,11 @@ let callback (req: Http_types.request) outchan =
         ~body:(sprintf "Parameter '%s' is missing" attr_name)
         outchan
 in
+let callback req ch =
+  HExtlib.finally
+    (fun () -> try close_out ch with Sys_error _ -> ())
+    callback (req, ch)
+in
 Helm_registry.load_from configuration_file;
 let port = Helm_registry.get_int "draw_graph.port" in
 Sys.chdir (Helm_registry.get "draw_graph.dir");
index 43027580016fe58101457ccc8ae38398ff8f0e8c..86bfe35f38c631237c402dddaa73cd4f428e4cbd 100644 (file)
@@ -76,7 +76,7 @@ let queue_mem item queue =  (* mem function over queues *)
   with Found -> true
 ;;
 
-let callback (req: Http_types.request) outchan =
+let callback ((req: Http_types.request), outchan) =
   try
     let res = new Http_response.response () in
     res#addBasicHeaders;
@@ -181,6 +181,13 @@ let callback (req: Http_types.request) outchan =
         outchan
 in
 
+let callback req ch =
+  HExtlib.finally
+    (fun () -> try close_out ch with Sys_error _ -> ())
+    callback (req, ch)
+
+in
+
 Helm_registry.load_from configuration_file;
 let port = Helm_registry.get_int "uri_set_queue.port" in
 printf "%s started and listening on port %d\n" daemon_name port;