Bladeren bron

integrated changes from main repository

Guenter Obiltschnig 19 jaren geleden
bovenliggende
commit
431807f25e

+ 7 - 2
Net/src/HTTPChunkedStream.cpp

@@ -1,7 +1,7 @@
 //
 // HTTPChunkedStream.cpp
 //
-// $Id: //poco/1.3/Net/src/HTTPChunkedStream.cpp#2 $
+// $Id: //poco/1.3/Net/src/HTTPChunkedStream.cpp#3 $
 //
 // Library: Net
 // Package: HTTP
@@ -102,7 +102,12 @@ int HTTPChunkedStreamBuf::readFromDevice(char* buffer, std::streamsize length)
 		if (n > 0) _chunk -= n;
 		return n;
 	}
-	else return 0;
+	else 
+	{
+		int ch = _session.get();
+		while (ch != eof && ch != '\n') ch = _session.get();
+		return 0;
+	}
 }
 
 

+ 3 - 2
Net/src/HTTPClientSession.cpp

@@ -1,7 +1,7 @@
 //
 // HTTPClientSession.cpp
 //
-// $Id: //poco/1.3/Net/src/HTTPClientSession.cpp#1 $
+// $Id: //poco/1.3/Net/src/HTTPClientSession.cpp#2 $
 //
 // Library: Net
 // Package: HTTPClient
@@ -164,7 +164,8 @@ std::ostream& HTTPClientSession::sendRequest(HTTPRequest& request)
 		close();
 	if (!connected())
 		reconnect();
-	request.setKeepAlive(keepAlive);
+	if (!keepAlive)
+		request.setKeepAlive(false);
 	request.setHost(_host, _port);
 	if (!_proxyHost.empty())
 		request.setURI(getHostInfo() + request.getURI());

+ 5 - 5
Net/testsuite/src/HTTPServerTest.cpp

@@ -1,7 +1,7 @@
 //
 // HTTPServerTest.cpp
 //
-// $Id: //poco/1.3/Net/testsuite/src/HTTPServerTest.cpp#1 $
+// $Id: //poco/1.3/Net/testsuite/src/HTTPServerTest.cpp#2 $
 //
 // Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
 // and Contributors.
@@ -249,7 +249,7 @@ void HTTPServerTest::testIdentityRequestKeepAlive()
 	HTTPClientSession cs("localhost", svs.address().port());
 	cs.setKeepAlive(true);
 	std::string body(5000, 'x');
-	HTTPRequest request("POST", "/echoBody");
+	HTTPRequest request("POST", "/echoBody", HTTPMessage::HTTP_1_1);
 	request.setContentLength((int) body.length());
 	request.setContentType("text/plain");
 	cs.sendRequest(request) << body;
@@ -263,7 +263,7 @@ void HTTPServerTest::testIdentityRequestKeepAlive()
 	
 	body.assign(1000, 'y');
 	request.setContentLength((int) body.length());
-	cs.setKeepAlive(false);
+	request.setKeepAlive(false);
 	cs.sendRequest(request) << body;
 	cs.receiveResponse(response) >> rbody;
 	assert (response.getContentLength() == body.size());
@@ -283,7 +283,7 @@ void HTTPServerTest::testChunkedRequestKeepAlive()
 	HTTPClientSession cs("localhost", svs.address().port());
 	cs.setKeepAlive(true);
 	std::string body(5000, 'x');
-	HTTPRequest request("POST", "/echoBody");
+	HTTPRequest request("POST", "/echoBody", HTTPMessage::HTTP_1_1);
 	request.setContentType("text/plain");
 	request.setChunkedTransferEncoding(true);
 	cs.sendRequest(request) << body;
@@ -296,7 +296,7 @@ void HTTPServerTest::testChunkedRequestKeepAlive()
 	assert (rbody == body);
 
 	body.assign(1000, 'y');
-	cs.setKeepAlive(false);
+	request.setKeepAlive(false);
 	cs.sendRequest(request) << body;
 	cs.receiveResponse(response) >> rbody;
 	assert (response.getContentLength() == HTTPMessage::UNKNOWN_CONTENT_LENGTH);

+ 2 - 2
Net/testsuite/src/HTTPTestServer.cpp

@@ -1,7 +1,7 @@
 //
 // HTTPTestServer.cpp
 //
-// $Id: //poco/1.3/Net/testsuite/src/HTTPTestServer.cpp#1 $
+// $Id: //poco/1.3/Net/testsuite/src/HTTPTestServer.cpp#2 $
 //
 // Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
 // and Contributors.
@@ -199,7 +199,7 @@ std::string HTTPTestServer::handleRequest() const
 		response.append(NumberFormatter::formatHex((unsigned) body.length()));
 		response.append("\r\n");
 		response.append(body);
-		response.append("\r\n0\r\n");
+		response.append("\r\n0\r\n\r\n");
 		response.append("HTTP/1.1 200 OK\r\n");
 		response.append("Connection: close\r\n");
 		response.append("Content-Type: text/plain\r\n");