diff --git a/build/src/mongoose.c b/build/src/mongoose.c
index 44ee4a25ab06681adde799cde47296481fdc6f93..51bb9180e2947610b3e1749ab63fee184d926c14 100644
--- a/build/src/mongoose.c
+++ b/build/src/mongoose.c
@@ -445,31 +445,6 @@ static int convert_uri_to_file_name(struct mg_connection *conn, char *buf,
   return 0;
 }
 
-// Check whether full request is buffered. Return:
-//   -1  if request is malformed
-//    0  if request is not yet fully buffered
-//   >0  actual request length, including last \r\n\r\n
-static int get_request_len(const char *buf, int buf_len) {
-  int i;
-
-  for (i = 0; i < buf_len; i++) {
-    // Control characters are not allowed but >=128 is.
-    // Abort scan as soon as one malformed character is found;
-    // don't let subsequent \r\n\r\n win us over anyhow
-    if (!isprint(* (const unsigned char *) &buf[i]) && buf[i] != '\r' &&
-        buf[i] != '\n' && * (const unsigned char *) &buf[i] < 128) {
-      return -1;
-    } else if (buf[i] == '\n' && i + 1 < buf_len && buf[i + 1] == '\n') {
-      return i + 2;
-    } else if (buf[i] == '\n' && i + 2 < buf_len && buf[i + 1] == '\r' &&
-               buf[i + 2] == '\n') {
-      return i + 3;
-    }
-  }
-
-  return 0;
-}
-
 // Send len bytes from the opened file to the client.
 static void send_file_data(struct mg_connection *conn, FILE *fp,
                            int64_t offset, int64_t len) {
diff --git a/build/src/string.c b/build/src/string.c
index 184349308d22b062e0d4934b4d2029de5389a8cf..9a9ffef83b35f61153d18305b5f3621e3cd5eb3b 100644
--- a/build/src/string.c
+++ b/build/src/string.c
@@ -285,3 +285,28 @@ void mg_url_encode(const char *src, char *dst, size_t dst_len) {
 
   *dst = '\0';
 }
+
+// Check whether full request is buffered. Return:
+//   -1  if request is malformed
+//    0  if request is not yet fully buffered
+//   >0  actual request length, including last \r\n\r\n
+static int get_request_len(const char *buf, int buf_len) {
+  int i;
+
+  for (i = 0; i < buf_len; i++) {
+    // Control characters are not allowed but >=128 is.
+    // Abort scan as soon as one malformed character is found;
+    // don't let subsequent \r\n\r\n win us over anyhow
+    if (!isprint(* (const unsigned char *) &buf[i]) && buf[i] != '\r' &&
+        buf[i] != '\n' && * (const unsigned char *) &buf[i] < 128) {
+      return -1;
+    } else if (buf[i] == '\n' && i + 1 < buf_len && buf[i + 1] == '\n') {
+      return i + 2;
+    } else if (buf[i] == '\n' && i + 2 < buf_len && buf[i + 1] == '\r' &&
+               buf[i + 2] == '\n') {
+      return i + 3;
+    }
+  }
+
+  return 0;
+}
diff --git a/mongoose.c b/mongoose.c
index a3e55822118ccc97ccc3f4323921215819d27077..a67ea4e8f94330d0cfce5f0106dd6b040c9c20eb 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -766,6 +766,31 @@ void mg_url_encode(const char *src, char *dst, size_t dst_len) {
   *dst = '\0';
 }
 
+// Check whether full request is buffered. Return:
+//   -1  if request is malformed
+//    0  if request is not yet fully buffered
+//   >0  actual request length, including last \r\n\r\n
+static int get_request_len(const char *buf, int buf_len) {
+  int i;
+
+  for (i = 0; i < buf_len; i++) {
+    // Control characters are not allowed but >=128 is.
+    // Abort scan as soon as one malformed character is found;
+    // don't let subsequent \r\n\r\n win us over anyhow
+    if (!isprint(* (const unsigned char *) &buf[i]) && buf[i] != '\r' &&
+        buf[i] != '\n' && * (const unsigned char *) &buf[i] < 128) {
+      return -1;
+    } else if (buf[i] == '\n' && i + 1 < buf_len && buf[i + 1] == '\n') {
+      return i + 2;
+    } else if (buf[i] == '\n' && i + 2 < buf_len && buf[i + 1] == '\r' &&
+               buf[i + 2] == '\n') {
+      return i + 3;
+    }
+  }
+
+  return 0;
+}
+
 static const char *month_names[] = {
   "Jan", "Feb", "Mar", "Apr", "May", "Jun",
   "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
@@ -2989,31 +3014,6 @@ static int convert_uri_to_file_name(struct mg_connection *conn, char *buf,
   return 0;
 }
 
-// Check whether full request is buffered. Return:
-//   -1  if request is malformed
-//    0  if request is not yet fully buffered
-//   >0  actual request length, including last \r\n\r\n
-static int get_request_len(const char *buf, int buf_len) {
-  int i;
-
-  for (i = 0; i < buf_len; i++) {
-    // Control characters are not allowed but >=128 is.
-    // Abort scan as soon as one malformed character is found;
-    // don't let subsequent \r\n\r\n win us over anyhow
-    if (!isprint(* (const unsigned char *) &buf[i]) && buf[i] != '\r' &&
-        buf[i] != '\n' && * (const unsigned char *) &buf[i] < 128) {
-      return -1;
-    } else if (buf[i] == '\n' && i + 1 < buf_len && buf[i + 1] == '\n') {
-      return i + 2;
-    } else if (buf[i] == '\n' && i + 2 < buf_len && buf[i + 1] == '\r' &&
-               buf[i + 2] == '\n') {
-      return i + 3;
-    }
-  }
-
-  return 0;
-}
-
 // Send len bytes from the opened file to the client.
 static void send_file_data(struct mg_connection *conn, FILE *fp,
                            int64_t offset, int64_t len) {