]> 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:10:14 +0000 (17:10 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Mon, 29 May 2006 17:10:14 +0000 (17:10 +0000)
helm/software/daemons/rdfly/rdfly.ml

index b9a79d1397da4941f444b678bc6d62d04322e995..18c2e1587dfe0e3c007678b5590abb9b381b3c62 100644 (file)
@@ -152,7 +152,7 @@ let password = get_option "rdfly.mysql_connection.password";;
 let user = get_option "rdfly.mysql_connection.user";;
 let daemonport = Helm_registry.get_int "rdfly.port";;
 
 let user = get_option "rdfly.mysql_connection.user";;
 let daemonport = Helm_registry.get_int "rdfly.port";;
 
-let callback (req: Http_types.request) ch =
+let callback ((req: Http_types.request), ch) =
   try
     debug_print ("Connection from " ^ req#clientAddr) ;
     debug_print ("Received request: " ^ req#uri) ;
   try
     debug_print ("Connection from " ^ req#clientAddr) ;
     debug_print ("Received request: " ^ req#uri) ;
@@ -180,6 +180,11 @@ let callback (req: Http_types.request) ch =
   | exc ->
       return_html_error ("Uncaught exception: " ^ (Printexc.to_string exc)) ch
 
   | exc ->
       return_html_error ("Uncaught exception: " ^ (Printexc.to_string exc)) ch
 
+let callback req ch =
+  HExtlib.finally
+    (fun () -> try close_out ch with Sys_error _ -> ())
+    callback (req, ch)
+
 let main () =
   Sys.catch_break true;
   try
 let main () =
   Sys.catch_break true;
   try