socket spurious status checks

This commit is contained in:
Matej Sekoranja
2011-08-23 17:50:32 +02:00
parent fa21fc3bd5
commit dee09c353e
4 changed files with 95 additions and 26 deletions
+13 -6
View File
@@ -121,15 +121,22 @@ namespace epics {
int optval = 1; // true
int retval = ::setsockopt(socket, IPPROTO_TCP, TCP_NODELAY,
&optval, sizeof(int));
if(retval<0) errlogSevPrintf(errlogMajor,
"Error setting TCP_NODELAY: %s", strerror(errno));
if(retval<0) {
char errStr[64];
epicsSocketConvertErrnoToString(errStr, sizeof(errStr));
errlogSevPrintf(errlogMajor, "Error setting TCP_NODELAY: %s", errStr);
}
// enable TCP_KEEPALIVE
retval = ::setsockopt(socket, SOL_SOCKET, SO_KEEPALIVE,
&optval, sizeof(int));
if(retval<0) errlogSevPrintf(errlogMinor,
"Error setting SO_KEEPALIVE: %s", strerror(errno));
if(retval<0)
{
char errStr[64];
epicsSocketConvertErrnoToString(errStr, sizeof(errStr));
errlogSevPrintf(errlogMinor, "Error setting SO_KEEPALIVE: %s", errStr);
}
// TODO tune buffer sizes?! Win32 defaults are 8k, which is OK
// create transport