X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/a359eb714e150b2b59856d0056b9880aaaedd128..44617167ac216781537290dce9cc097df89dc3d2:/Server/src/connection.cpp diff --git a/Server/src/connection.cpp b/Server/src/connection.cpp index a8f17ea..cf0e293 100644 --- a/Server/src/connection.cpp +++ b/Server/src/connection.cpp @@ -39,14 +39,16 @@ namespace Server { Connection::~Connection(void) { #ifdef DEBUG - cerr << __FILE__ << ": destructor." << endl; + cerr << __FILE__ << "(" << __LINE__ << ")" + << ": destructor." << endl; #endif // DEBUG } Connection::Connection(const sockbuf::sockdesc& sd): socket(sd) { #ifdef DEBUG - cerr << __FILE__ << ": sd = " << sd.sock; + cerr << __FILE__ << "(" << __LINE__ << ")" + << ": sd = " << sd.sock; #endif // DEBUG host = socket->peerhost(); port = socket->peerport(); @@ -58,7 +60,8 @@ Connection::Connection(const sockbuf::sockdesc& sd): Connection::Connection(const sockbuf::type& type, const std::string& host, const Port& port): socket(type), host(host), port(port) { #ifdef DEBUG - cerr << __FILE__ << ": type = " << type << " | host = " << host + cerr << __FILE__ << "(" << __LINE__ << ")" + << ": type = " << type << " | host = " << host << " | port = " << port << endl; #endif // DEBUG } @@ -66,15 +69,23 @@ Connection::Connection(const sockbuf::type& type, const std::string& host, Connection::Connection(const std::string& host, const Port& port): host(host), port(port) { #ifdef DEBUG - cerr << __FILE__ << ": host = " << host << " | port = " << port << endl; + cerr << __FILE__ << "(" << __LINE__ << ")" + << ": host = " << host << " | port = " << port << endl; #endif // DEBUG } -void Connection::finish(bool attach) { - //socket_mutex.lock(); - socket->shutdown(sockbuf::shut_readwrite); - //socket_mutex.unlock(); - Runnable::finish(attach); +void Connection::finish(void) { +#ifdef DEBUG + cerr << __FILE__ << "(" << __LINE__ << ")" + << ": finish();" << endl; +#endif // DEBUG + Runnable::finish(); + try { + // Para que el socket retorne el control, cierro sus canales de E/S. + socket->shutdown(sockbuf::shut_readwrite); + } catch (const sockerr& e) { + signal_error().emit(e.serrno(), e.errstr()); + } } const string& Connection::get_host(void) const {