]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/ocaml-http/examples/damned_recursion.ml
ocaml 3.09 transition
[helm.git] / helm / DEVEL / ocaml-http / examples / damned_recursion.ml
index bf2cf31ada3faef48ae61a0d6089cecb3fc12180..be2e3062983331e92cdf28640d392b16ea816c4f 100644 (file)
 open Printf
 open Http_types
 
+let port = 9999
+
 let callback (req: Http_types.request) outchan =
   let i = int_of_string (req#param "x") in
-  match i with
-  | 0 -> output_string outchan "1"
-  | x when x > 0 ->
-      let data =
-        Http_user_agent.get (sprintf "http://127.0.0.1/foo?x=%d" (x - 1))
-      in
-      output_string outchan (sprintf "%s %d" data x)
-  | _ -> assert false
+  let body =
+    match i with
+    | 0 -> "0"
+    | x when x > 0 ->
+       let data =
+          Http_user_agent.get (sprintf "http://127.0.0.1:%d/foo?x=%d"
+                                port (x - 1))
+       in
+       sprintf "%s %d" data x
+    | _ -> assert false
+  in
+  Http_daemon.respond ~code:(`Code 200) ~body outchan;
+  close_out outchan  (* Http_user_agent relies on EOF, not Content-Length *)
 
 let spec =
   { Http_daemon.default_spec with
       callback = callback;
-      port = 9999;
+      port = port;
       mode = `Thread;
   }