diff --git a/examples/http_client/http_client.c b/examples/http_client/http_client.c
index 3f89d8ae6d4e384b870a562c64d785b8ea2a1d68..41eac581e90d8f3c8e619a8f2e4e038a11cb06f9 100644
--- a/examples/http_client/http_client.c
+++ b/examples/http_client/http_client.c
@@ -36,6 +36,7 @@ static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
     case MG_REPLY:
       // Send reply to the original connection
       orig = (struct mg_connection *) conn->connection_param;
+      mg_send_status(orig, conn->status_code);
       mg_send_header(orig, "Content-Type", "text/plain");
       mg_send_data(orig, conn->content, conn->content_len);
       mg_send_data(orig, "", 0);  // Last chunk: mark the end of reply
diff --git a/mongoose.c b/mongoose.c
index 76048b282e1efbece423744c15703fdcdd563dcd..4048a790fa958f0b79dfa1949b6742d2badf7763 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -2410,6 +2410,9 @@ static int parse_http_message(char *buf, int len, struct mg_connection *ri) {
     if (is_request) {
       ri->http_version += 5;
     }
+    else {
+      ri->status_code = atoi(ri->uri);
+    }
     parse_http_headers(&buf, ri);
 
     if ((ri->query_string = strchr(ri->uri, '?')) != NULL) {