this->fd = -1;
this->state = I_ERROR;
this->OnError(I_ERR_SOCKET);
+ this->ClosePending = true;
log(DEBUG,"OpenTCPSocket() error");
return;
}
this->fd = -1;
this->state = I_ERROR;
this->OnError(I_ERR_BIND);
+ this->ClosePending = true;
log(DEBUG,"BindSocket() error %s",strerror(errno));
return;
}
this->state = I_ERROR;
this->OnError(I_ERR_RESOLVE);
this->fd = -1;
+ this->ClosePending = true;
return false;
}
return this->DoConnect();
{
log(DEBUG,"Error connect() %d: %s",this->fd,strerror(errno));
this->OnError(I_ERR_CONNECT);
- this->state = I_ERROR;
this->Close();
+ this->state = I_ERROR;
this->fd = -1;
+ this->ClosePending = true;
return false;
}
}
shutdown(this->fd,2);
close(this->fd);
socket_ref[this->fd] = NULL;
+ this->ClosePending = true;
this->fd = -1;
}
}
log(DEBUG,"Write error on socket: %s",strerror(errno));
this->OnError(I_ERR_WRITE);
this->state = I_ERROR;
+ this->ClosePending = true;
return true;
}
}
}
- return false;
+ return (fd < 0);
}
bool InspSocket::Timeout(time_t current)
this->OnError(I_ERR_TIMEOUT);
timeout = true;
this->state = I_ERROR;
+ this->ClosePending = true;
return true;
}
return this->FlushWriteBuffer();
* Both FlushWriteBuffer AND the return result of OnDataReady must
* return true for this to be ok.
*/
- return (n && !this->FlushWriteBuffer());
+ if (this->FlushWriteBuffer())
+ return false;
+ return n;
break;
default:
break;