mirror of
				https://github.com/pocoproject/poco.git
				synced 2025-10-28 19:51:58 +01:00 
			
		
		
		
	merge WebSocket fixes from devel
This commit is contained in:
		| @@ -150,6 +150,9 @@ public: | |||||||
| 		/// | 		/// | ||||||
| 		/// The result of the handshake can be obtained from the response | 		/// The result of the handshake can be obtained from the response | ||||||
| 		/// object. | 		/// object. | ||||||
|  | 		/// | ||||||
|  | 		/// The HTTPClientSession session object must no longer be used after setting | ||||||
|  | 		/// up the WebSocket. | ||||||
|  |  | ||||||
| 	WebSocket(HTTPClientSession& cs, HTTPRequest& request, HTTPResponse& response, HTTPCredentials& credentials); | 	WebSocket(HTTPClientSession& cs, HTTPRequest& request, HTTPResponse& response, HTTPCredentials& credentials); | ||||||
| 		/// Creates a client-side WebSocket, using the given | 		/// Creates a client-side WebSocket, using the given | ||||||
| @@ -165,6 +168,9 @@ public: | |||||||
| 		/// | 		/// | ||||||
| 		/// The result of the handshake can be obtained from the response | 		/// The result of the handshake can be obtained from the response | ||||||
| 		/// object. | 		/// object. | ||||||
|  | 		/// | ||||||
|  | 		/// The HTTPClientSession session object must no longer be used after setting | ||||||
|  | 		/// up the WebSocket. | ||||||
|  |  | ||||||
| 	WebSocket(const Socket& socket); | 	WebSocket(const Socket& socket); | ||||||
| 		/// Creates a WebSocket from another Socket, which must be a WebSocket, | 		/// Creates a WebSocket from another Socket, which must be a WebSocket, | ||||||
| @@ -218,9 +224,11 @@ public: | |||||||
| 		/// A WebSocketException will also be thrown if a malformed | 		/// A WebSocketException will also be thrown if a malformed | ||||||
| 		/// or incomplete frame is received. | 		/// or incomplete frame is received. | ||||||
| 		/// | 		/// | ||||||
| 		/// Returns the number of bytes received. | 		/// Returns the number of payload bytes received. | ||||||
| 		/// A return value of 0 means that the peer has | 		/// A return value of 0, with flags also 0, means that the peer has | ||||||
| 		/// shut down or closed the connection. | 		/// shut down or closed the connection. | ||||||
|  | 		/// A return value of 0, with non-zero flags, indicates an | ||||||
|  | 		/// reception of an empty frame (e.g., in case of a PING). | ||||||
| 		/// | 		/// | ||||||
| 		/// Throws a TimeoutException if a receive timeout has | 		/// Throws a TimeoutException if a receive timeout has | ||||||
| 		/// been set and nothing is received within that interval. | 		/// been set and nothing is received within that interval. | ||||||
| @@ -248,9 +256,11 @@ public: | |||||||
| 		/// DoS attack (memory exhaustion) by sending a WebSocket frame | 		/// DoS attack (memory exhaustion) by sending a WebSocket frame | ||||||
| 		/// header with a huge payload size. | 		/// header with a huge payload size. | ||||||
| 		/// | 		/// | ||||||
| 		/// Returns the number of bytes received. | 		/// Returns the number of payload bytes received. | ||||||
| 		/// A return value of 0 means that the peer has | 		/// A return value of 0, with flags also 0, means that the peer has | ||||||
| 		/// shut down or closed the connection. | 		/// shut down or closed the connection. | ||||||
|  | 		/// A return value of 0, with non-zero flags, indicates an | ||||||
|  | 		/// reception of an empty frame (e.g., in case of a PING). | ||||||
| 		/// | 		/// | ||||||
| 		/// Throws a TimeoutException if a receive timeout has | 		/// Throws a TimeoutException if a receive timeout has | ||||||
| 		/// been set and nothing is received within that interval. | 		/// been set and nothing is received within that interval. | ||||||
|   | |||||||
| @@ -203,6 +203,7 @@ int WebSocketImpl::receiveBytes(void* buffer, int length, int) | |||||||
| { | { | ||||||
| 	char mask[4]; | 	char mask[4]; | ||||||
| 	bool useMask; | 	bool useMask; | ||||||
|  | 	_frameFlags = 0; | ||||||
| 	int payloadLength = receiveHeader(mask, useMask); | 	int payloadLength = receiveHeader(mask, useMask); | ||||||
| 	if (payloadLength <= 0) | 	if (payloadLength <= 0) | ||||||
| 		return payloadLength; | 		return payloadLength; | ||||||
| @@ -216,6 +217,7 @@ int WebSocketImpl::receiveBytes(Poco::Buffer<char>& buffer, int, const Poco::Tim | |||||||
| { | { | ||||||
| 	char mask[4]; | 	char mask[4]; | ||||||
| 	bool useMask; | 	bool useMask; | ||||||
|  | 	_frameFlags = 0; | ||||||
| 	int payloadLength = receiveHeader(mask, useMask); | 	int payloadLength = receiveHeader(mask, useMask); | ||||||
| 	if (payloadLength <= 0) | 	if (payloadLength <= 0) | ||||||
| 		return payloadLength; | 		return payloadLength; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Günter Obiltschnig
					Günter Obiltschnig