Fixes to event_http_server for examples

Set Content-Length on responses. Otherwise e.g. curl will wait forever
for the connection to close.
Set request data to request body only, instead of full request. Parsing
of any local commands would fail previously.

Change-Id: Iba8ebb429ec3430d32d8a166dcc6985a5f79562e
Reviewed-on: https://weave-review.googlesource.com/2781
Reviewed-by: Dave Paul <davepaul@google.com>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 0bb7f26..66a9132 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -16,6 +16,7 @@
 Chris Sosa <sosa@google.com>
 Christopher Wiley <wiley@google.com>
 Daniel Erat <derat@google.com>
+David Paul <davepaul@google.com>
 David Zeuthen <zeuthen@google.com>
 Gene Gutnik <gene@google.com>
 Gerry Fan <gfan@google.com>
diff --git a/examples/provider/event_http_server.cc b/examples/provider/event_http_server.cc
index c058401..48faab1 100644
--- a/examples/provider/event_http_server.cc
+++ b/examples/provider/event_http_server.cc
@@ -30,8 +30,7 @@
 class HttpServerImpl::RequestImpl : public Request {
  public:
   RequestImpl(EventPtr<evhtp_request_t> req) : req_(std::move(req)) {
-    evbuf_t* input_buffer =
-        bufferevent_get_input(evhtp_request_get_bev(req_.get()));
+    evbuf_t* input_buffer = req_.get()->buffer_in;
     data_.resize(evbuffer_get_length(input_buffer));
     evbuffer_remove(input_buffer, &data_[0], data_.size());
   }
@@ -56,6 +55,9 @@
     evbuffer_add(buf.get(), data.data(), data.size());
     evhtp_header_key_add(req_->headers_out, "Content-Type", 0);
     evhtp_header_val_add(req_->headers_out, mime_type.c_str(), 1);
+    evhtp_header_key_add(req_->headers_out, "Content-Length", 0);
+    std::string content_length = std::to_string(evbuffer_get_length(buf.get()));
+    evhtp_header_val_add(req_->headers_out, content_length.c_str(), 1);
     evhtp_send_reply_start(req_.get(), status_code);
     evhtp_send_reply_body(req_.get(), buf.get());
     evhtp_send_reply_end(req_.get());