+ (** tcp_server which creates a new thread for each request to be served *)
+let thread ~sockaddr ~timeout callback =
+(* let (suck, callback) = init_socket_and_callback sockaddr callback timeout in *)
+ let suck = init_socket sockaddr in
+ let callback = init_callback callback timeout in
+ let callback (i, o) =
+ try
+ callback i o;
+ close_out o
+ with
+ | Timeout -> close_out o
+ | e ->
+ close_out o;
+ raise e
+ in
+ while true do
+ let (client, _) = Unix.accept suck in
+ (* client is now connected *)
+ let (inchan, outchan) =
+ (Unix.in_channel_of_descr client, Unix.out_channel_of_descr client)
+ in
+ Http_threaded_tcp_server.serve callback (inchan, outchan)
+ done
+