Selaa lähdekoodia

Merge pull request #566 from marcoafo/master

Changed method getPostData from CivetServer to a more robust method
bel2125 7 vuotta sitten
vanhempi
commit
a3a70c50a2
1 muutettua tiedostoa jossa 8 lisäystä ja 10 poistoa
  1. 8 10
      src/CivetServer.cpp

+ 8 - 10
src/CivetServer.cpp

@@ -549,18 +549,16 @@ CivetServer::getParam(const char *data,
 std::string
 std::string
 CivetServer::getPostData(struct mg_connection *conn)
 CivetServer::getPostData(struct mg_connection *conn)
 {
 {
-	const struct mg_request_info *ri = mg_get_request_info(conn);
-	assert(ri != NULL);
-	CivetServer *me = (CivetServer *)(ri->user_data);
-	assert(me != NULL);
-	mg_lock_context(me->context);
-	CivetConnection &conobj = me->connections[conn];
 	mg_lock_connection(conn);
 	mg_lock_connection(conn);
-	mg_unlock_context(me->context);
 	std::string postdata;
 	std::string postdata;
-	postdata.resize(conobj.postDataLen);
-	memcpy(&postdata[0],conobj.postData,conobj.postDataLen);
-	postdata += '\0';
+	char buf[2048];
+	int r = mg_read(conn, buf, sizeof(buf));
+	while (r > 0) {
+		std::string p = std::string(buf);
+		p.resize(r);
+		postdata += p;
+		r = mg_read(conn, buf, sizeof(buf));
+	}
 	mg_unlock_connection(conn);
 	mg_unlock_connection(conn);
 	return postdata;
 	return postdata;
 }
 }