PIIODevice destructor fix
This commit is contained in:
@@ -244,7 +244,7 @@ PIEthernet::PIEthernet(int sock_, PIString ip_port): PIIODevice("", ReadWrite) {
|
||||
PIEthernet::~PIEthernet() {
|
||||
//piCout << "~PIEthernet" << uint(this);
|
||||
stop();
|
||||
closeDevice();
|
||||
close();
|
||||
//piCoutObj << "~PIEthernet done";
|
||||
}
|
||||
|
||||
@@ -566,7 +566,6 @@ bool PIEthernet::connect(bool threaded) {
|
||||
connected_ = (::connect(sock, (sockaddr * )&PRIVATE->addr_, sizeof(PRIVATE->addr_)) == 0);
|
||||
if (!connected_) {
|
||||
piCoutObj << "Can`t connect to" << addr_r << "," << ethErrorString();
|
||||
closeSocket(sock);
|
||||
}
|
||||
opened_ = connected_;
|
||||
if (connected_) {
|
||||
@@ -663,9 +662,8 @@ int PIEthernet::readDevice(void * read_to, int max_size) {
|
||||
//piCoutObj << "connect to " << ip_ << ":" << port_ << "...";
|
||||
connected_ = (::connect(sock, (sockaddr * )&(PRIVATE->addr_), sizeof(PRIVATE->addr_)) == 0);
|
||||
//piCoutObj << "connect to " << ip_ << ":" << port_ << connected_;
|
||||
if (!connected_) {
|
||||
if (!connected_)
|
||||
piCoutObj << "Can`t connect to" << addr_r << "," << ethErrorString();
|
||||
}
|
||||
opened_ = connected_;
|
||||
if (connected_) {
|
||||
connecting_ = false;
|
||||
@@ -674,10 +672,7 @@ int PIEthernet::readDevice(void * read_to, int max_size) {
|
||||
piMSleep(10);
|
||||
//piCout << "connected to" << path();
|
||||
}
|
||||
if (!connected_) {
|
||||
closeSocket(sock);
|
||||
return -1;
|
||||
}
|
||||
if (!connected_) return -1;
|
||||
errorClear();
|
||||
rs = ethRecv(sock, read_to, max_size);
|
||||
//piCoutObj << "readed" << rs;
|
||||
@@ -742,7 +737,7 @@ int PIEthernet::writeDevice(const void * data, int max_size) {
|
||||
//piCoutObj << "connect SingleTCP" << ip_s << ":" << port_s << "...";
|
||||
if (::connect(sock, (sockaddr * )&PRIVATE->addr_, sizeof(PRIVATE->addr_)) != 0) {
|
||||
//piCoutObj << "Can`t connect to " << ip_s << ":" << port_s << ", " << ethErrorString();
|
||||
closeSocket(sock);
|
||||
msleep(PIP_MIN_MSLEEP);
|
||||
return -1;
|
||||
}
|
||||
//piCoutObj << "ok, write SingleTCP" << int(data) << max_size << "bytes ...";
|
||||
@@ -776,19 +771,15 @@ int PIEthernet::writeDevice(const void * data, int max_size) {
|
||||
#endif
|
||||
//piCoutObj << "connect to " << ip << ":" << port_;
|
||||
connected_ = (::connect(sock, (sockaddr * )&PRIVATE->addr_, sizeof(PRIVATE->addr_)) == 0);
|
||||
if (!connected_) {
|
||||
if (!connected_)
|
||||
piCoutObj << "Can`t connect to" << addr_r << "," << ethErrorString();
|
||||
}
|
||||
opened_ = connected_;
|
||||
if (connected_) {
|
||||
connecting_ = false;
|
||||
connected();
|
||||
}
|
||||
}
|
||||
if (!connected_) {
|
||||
closeSocket(sock);
|
||||
return -1;
|
||||
}
|
||||
if (!connected_) return -1;
|
||||
ret = ::send(sock, (const char *)data, max_size, 0);
|
||||
if (ret < 0) {
|
||||
connected_ = false;
|
||||
|
||||
Reference in New Issue
Block a user