- //socket_mutex.lock();
- close(socket.sd());
- //socket.shutdown(sockbuf::shut_readwrite);
- //socket_mutex.unlock();
- Runnable::finish(attach);
-}*/
+ Runnable::finish();
+ // Creo una conexión suicida para que el accept() del server retorne
+ // el control y el server pueda terminar realmente.
+ try {
+ sockinetbuf suicida(sockbuf::sock_stream);
+ suicida.connect(socket.localhost(), socket.localport());
+ } catch (const sockerr& e) {
+ // FIXME
+ signal_error().emit(100000 + e.serrno(), string("No se pudo crear "
+ "conexión 'suicida' para terminar el servidor: ")
+ + e.errstr());
+ }
+}