]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/ocaml-http/examples/damned_recursion.ml
- shows also version in usage string
[helm.git] / helm / DEVEL / ocaml-http / examples / damned_recursion.ml
index 32faa01371ee385d76f01a076e60014aebff6005..c7fbe846f3b2af04b3c06988303e31cc8ebd38f2 100644 (file)
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *)
 
+open Http_types;;
 open Printf;;
 
-(*
-let wget url =
-  prerr_endline (sprintf "DEBUG: wgetting url '%s'" url);
-  Http_client.Convenience.http_get url
-in
-*)
 let wget addr port path =
-  let rec wget' inchan data =
-    try
-      wget' inchan (data ^ input_line inchan)
-    with End_of_file ->
-      data
+  let rec wget' inchan buf =
+    Buffer.add_string buf (input_line inchan ^ "\n");
+    wget' inchan buf
   in
   prerr_endline (sprintf "DEBUG: wgetting url '%s:%d%s'" addr port path);
   let sockaddr = Unix.ADDR_INET (Unix.inet_addr_of_string addr, port) in
   let suck = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in
   Unix.connect suck sockaddr;
   let outchan = Unix.out_channel_of_descr suck in
-  output_string outchan (sprintf "GET %s HTTP/1.0\r\n" path);
+  output_string outchan (sprintf "GET %s HTTP/1.0\r\n\r\n" path);
   flush outchan;
   let inchan = Unix.in_channel_of_descr suck in
-  wget' inchan ""
+  let buf = Buffer.create 1023 in
+  try
+    wget' inchan buf
+  with End_of_file -> Buffer.contents buf
 in
-let callback req outchan =
+let callback (req: request) outchan =
   let i = int_of_string (req#param "x") in
   prerr_endline (string_of_int i);
   match i with
@@ -52,12 +48,11 @@ let callback req outchan =
   | x when x>0 ->
       let data =
         wget "127.0.0.1" 9999 (sprintf "/foo?x=%d" (x-1))
-(*         wget (sprintf "http://localhost:9999/foo?x=%d" (x-1)) *)
-(*         wget "http://localhost:80/index.html" *)
+(*         wget "127.0.0.1" 80 "/index.html" *)
       in
       output_string outchan (sprintf "%s %d" data x)
   | _ -> assert false
 in
-Http_client.Convenience.http_trials := 1;
-(* Http_daemon.start' ~port:9999 ~mode:`Thread callback *)
-Http_daemon.start' ~port:9999 ~mode:`Fork callback
+let mode = `Thread in
+Http_daemon.start' ~port:9999 ~mode callback
+