]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/daemons/uwobo/uwobo.ml
instead of including library_notation we include logic/equality that is smaller
[helm.git] / helm / software / daemons / uwobo / uwobo.ml
index 1a5b44f620264f3c862bc09f3759b25c68dd311c..7b8a20954f973743eb9a57351d45ce55a8b26124 100644 (file)
@@ -288,9 +288,7 @@ let start_new_session cmd_pipe res_pipe outchan port logfile =
           Unix.environment ()
          in
          (* 4. We exec a new copy of uwobo *)
-         Unix.execve Sys.executable_name [||] environment ; 
-         (* It should never reach this point *)
-         assert false
+         Unix.execve Sys.executable_name [||] environment
        ) ()
   | child when child > 0 ->
      (* let's check if the new UWOBO started correctly *)
@@ -476,7 +474,7 @@ let callback
            | None -> Http_daemon.respond_error ~code:(`Status (`Client_error `Bad_request)) outchan ;
          end
     | "/apply" ->
-        let logger = new Uwobo_logger.processingLogger () in
+(*         let logger = new Uwobo_logger.processingLogger () in *)
         veillogger#clearMsgs;
        let profile = try Some (req#param "profile") with _ -> None in
        let password = try Some (req#param "password") with _ -> None in
@@ -548,7 +546,8 @@ let callback
           Http_daemon.send_basic_headers ~code:(`Code 200) outchan;
           Http_daemon.send_header "Content-Type" content_type outchan;
           Http_daemon.send_CRLF outchan;
-          write_result outchan
+          write_result outchan;
+          close_out outchan
         with Uwobo_failure errmsg ->
           return_error
             ("Stylesheet chain application failed: " ^ errmsg)
@@ -567,6 +566,13 @@ let callback
       return_error ("Uncaught exception: " ^ (Printexc.to_string exc)) outchan
 ;;
 
+let callback
+  ~syslogger ~styles ~cmd_pipe ~res_pipe () (req: Http_types.request) outchan
+=
+  HExtlib.finally
+    (fun () -> try close_out outchan with Sys_error _ -> ())
+    (callback ~syslogger ~styles ~cmd_pipe ~res_pipe () req) outchan
+
   (* UWOBO's startup *)
 let main () =
     (* (1) system logger *)
@@ -801,8 +807,11 @@ let main () =
         debug_print (sprintf "Starting HTTP daemon on port %d ..." port);
           (* next invocation doesn't return, process will keep on serving HTTP
           requests until it will get killed by father *)
-        Http_daemon.start'~port ~mode:`Fork
-          (callback ~syslogger ~styles ~cmd_pipe ~res_pipe ())
+        let d_spec = Http_daemon.daemon_spec
+            ~port ~mode:`Fork
+            ~callback:(callback ~syslogger ~styles ~cmd_pipe ~res_pipe ()) ()
+        in
+        Http_daemon.main d_spec
     | _ (* < 0 *) ->  (* fork failed :-((( *)
         failwith "Can't fork :-("
   done