diff --git a/src/remote/abstractResponseHandler.cpp b/src/remote/abstractResponseHandler.cpp index 1a494f0..f2d5f2d 100644 --- a/src/remote/abstractResponseHandler.cpp +++ b/src/remote/abstractResponseHandler.cpp @@ -42,7 +42,7 @@ void ResponseHandler::handleResponse(osiSockAddr* responseFrom, std::cerr<<"Message [0x"<getRemoteName() <<" : "<<_description<<"\n" - < #include #include +#include using namespace epics::pvData; using namespace std; @@ -267,13 +268,18 @@ void BlockingUDPTransport::run() { try { processBuffer(thisTransport, fromAddress, &_receiveBuffer); } catch(std::exception& e) { - LOG(logLevelError, - "an exception caught while in UDP receiveThread %s at %s:%d: %s", - _remoteName.c_str(), __FILE__, __LINE__, e.what()); - } catch (...) { - LOG(logLevelError, - "unknown exception caught while in UDP receiveThread %s at %s:%d.", - _remoteName.c_str(), __FILE__, __LINE__); + if(IS_LOGGABLE(logLevelError)) { + char strBuffer[64]; + sockAddrToDottedIP(&fromAddress.sa, strBuffer, sizeof(strBuffer)); + size_t epos = _receiveBuffer.getPosition(); + + // of course _receiveBuffer _may_ have been modified during processing... + _receiveBuffer.setPosition(RECEIVE_BUFFER_PRE_RESERVE); + _receiveBuffer.setLimit(RECEIVE_BUFFER_PRE_RESERVE+bytesRead); + + std::cerr<<"Error on UDP RX "< "<<_remoteName<<" at "<= (int8)m_handlerTable.size()) { - LOG(logLevelError, - "Invalid (or unsupported) command: %x.", (0xFF&command)); - - if(pvAccessIsLoggable(logLevelError)) { - std::cerr<<"Invalid PVA header "<