Commit 0b8286f5 authored by Pavel Vainerman's avatar Pavel Vainerman

(ModbusTCPSession): добавил вылавливание исключения CommFailed (закрытие соединения)

parent faee9b3c
...@@ -289,6 +289,8 @@ size_t ModbusTCPSession::getNextData( unsigned char* buf, int len ) ...@@ -289,6 +289,8 @@ size_t ModbusTCPSession::getNextData( unsigned char* buf, int len )
{ {
ssize_t res = ModbusTCPCore::getDataFD( sock->getSocket(), qrecv, buf, len ); ssize_t res = ModbusTCPCore::getDataFD( sock->getSocket(), qrecv, buf, len );
try
{
if( res > 0 ) if( res > 0 )
return res; return res;
...@@ -299,6 +301,11 @@ size_t ModbusTCPSession::getNextData( unsigned char* buf, int len ) ...@@ -299,6 +301,11 @@ size_t ModbusTCPSession::getNextData( unsigned char* buf, int len )
return 0; return 0;
} }
}
catch( UniSetTypes::CommFailed )
{
}
if( !cancelled && dlog->is_info() ) if( !cancelled && dlog->is_info() )
dlog->info() << peername << "(getNextData): client disconnected" << endl; dlog->info() << peername << "(getNextData): client disconnected" << endl;
...@@ -356,6 +363,8 @@ mbErrCode ModbusTCPSession::tcp_processing( ModbusRTU::ADUHeader& mhead ) ...@@ -356,6 +363,8 @@ mbErrCode ModbusTCPSession::tcp_processing( ModbusRTU::ADUHeader& mhead )
pt.setTiming(10); pt.setTiming(10);
try
{
do do
{ {
len = ModbusTCPCore::readDataFD( sock->getSocket(), qrecv, mhead.len ); len = ModbusTCPCore::readDataFD( sock->getSocket(), qrecv, mhead.len );
...@@ -364,6 +373,11 @@ mbErrCode ModbusTCPSession::tcp_processing( ModbusRTU::ADUHeader& mhead ) ...@@ -364,6 +373,11 @@ mbErrCode ModbusTCPSession::tcp_processing( ModbusRTU::ADUHeader& mhead )
io.loop.iteration(); io.loop.iteration();
} }
while( len == 0 && !pt.checkTime() ); while( len == 0 && !pt.checkTime() );
}
catch( UniSetTypes::CommFailed )
{
}
if( len < mhead.len ) if( len < mhead.len )
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment