You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2008/11/04 23:04:16 UTC
svn commit: r711441 - in /activemq/activemq-cpp/trunk/src/main/decaf/net:
SocketInputStream.cpp SocketOutputStream.cpp
Author: tabish
Date: Tue Nov 4 14:04:16 2008
New Revision: 711441
URL: http://svn.apache.org/viewvc?rev=711441&view=rev
Log:
https://issues.apache.org/activemq/browse/AMQCPP-200
Add additional checks to detect a closed stream and not attempt to use a closed socket.
Modified:
activemq/activemq-cpp/trunk/src/main/decaf/net/SocketInputStream.cpp
activemq/activemq-cpp/trunk/src/main/decaf/net/SocketOutputStream.cpp
Modified: activemq/activemq-cpp/trunk/src/main/decaf/net/SocketInputStream.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/decaf/net/SocketInputStream.cpp?rev=711441&r1=711440&r2=711441&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/decaf/net/SocketInputStream.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/decaf/net/SocketInputStream.cpp Tue Nov 4 14:04:16 2008
@@ -70,6 +70,13 @@
////////////////////////////////////////////////////////////////////////////////
std::size_t SocketInputStream::available() const throw ( io::IOException ){
+ // Check for a closed call from socket class, if closed then this read fails.
+ if( closed ){
+ throw IOException(
+ __FILE__, __LINE__,
+ "decaf::io::SocketInputStream::available - The stream is closed" );
+ }
+
// Convert to an OS level socket.
apr_os_sock_t oss;
apr_os_sock_get( (apr_os_sock_t*)&oss, socket );
@@ -129,6 +136,13 @@
////////////////////////////////////////////////////////////////////////////////
unsigned char SocketInputStream::read() throw ( IOException ){
+ // Check for a closed call from socket class, if closed then this read fails.
+ if( closed ){
+ throw IOException(
+ __FILE__, __LINE__,
+ "decaf::io::SocketInputStream::read - The Stream has been closed" );
+ }
+
apr_status_t result = APR_SUCCESS;
char c;
apr_size_t size = 1;
@@ -149,6 +163,13 @@
std::size_t bufferSize )
throw ( IOException, lang::exceptions::NullPointerException ) {
+ // Check for a closed call from socket class, if closed then this read fails.
+ if( closed ){
+ throw IOException(
+ __FILE__, __LINE__,
+ "decaf::io::SocketInputStream::read - The Stream has been closed" );
+ }
+
apr_size_t size = (apr_size_t)bufferSize;
apr_status_t result = APR_SUCCESS;
@@ -167,7 +188,7 @@
if( closed ){
throw IOException(
__FILE__, __LINE__,
- "activemq::io::SocketInputStream::read - The connection is broken" );
+ "decaf::io::SocketInputStream::read - The connection is broken" );
}
// Check for error.
Modified: activemq/activemq-cpp/trunk/src/main/decaf/net/SocketOutputStream.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/decaf/net/SocketOutputStream.cpp?rev=711441&r1=711440&r2=711441&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/decaf/net/SocketOutputStream.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/decaf/net/SocketOutputStream.cpp Tue Nov 4 14:04:16 2008
@@ -79,6 +79,12 @@
"SocketOutputStream::write - passed buffer is null" );
}
+ if( closed ) {
+ throw IOException(
+ __FILE__, __LINE__,
+ "decaf::net::SocketOutputStream::write - This Stream has been closed." );
+ }
+
apr_size_t remaining = (apr_size_t)len;
apr_status_t result = APR_SUCCESS;