From c9441e50da05426bce5eea060354e1477daa4ece Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Tue, 6 Mar 2012 17:29:44 -0500 Subject: [PATCH] Avoid gratuitous mutation --- amqp_relay.ml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/amqp_relay.ml b/amqp_relay.ml index f768f8b..97c864a 100644 --- a/amqp_relay.ml +++ b/amqp_relay.ml @@ -83,14 +83,16 @@ let deserialize_header buf = (body_size, read_properties class_id buf) let send_content_body conn channel body = - let offset = ref 0 in let len = String.length body in - while (!offset) < len do - let snip_len = min conn.frame_max (len - !offset) in - Buffer.add_substring conn.output_buf body (!offset) snip_len; - write_frame conn frame_body channel; - offset := !offset + snip_len - done + let rec send_remainder offset = + if offset >= len + then () + else + let snip_len = min conn.frame_max (len - offset) in + Buffer.add_substring conn.output_buf body offset snip_len; + write_frame conn frame_body channel; + send_remainder (offset + snip_len) + in send_remainder 0 let next_frame conn required_type = let (frame_type, channel, length) = read_frame conn in