- conn = new_connection(socket.accept());
- // TODO: poner lock.
- connections.push_back(conn);
- // TODO: sacar lock.
- // TODO: esto va en Server::new_connection()
+ try {
+ connection = new_connection(socket.accept());
+ } catch (const sockerr& e) { // No se si el accept() puede fallar.
+ signal_error().emit(e.serrno(),
+ string("Error creando conexión nueva: ") + e.errstr());
+ continue; // Supongo que puede seguir aceptando conexiones.
+ }
+ if (!stop()) {
+ // Solo avisamos si la conexión que viene no es para matarnos.
+ _connection_opened(connection->get_host(), connection->get_port());
+ }
+#ifdef DEBUG
+ cerr << __FILE__ << "(" << __LINE__ << ")"
+ << ": real_run(): connection = " << connection
+ << endl;
+#endif // DEBUG
+ Glib::Mutex::Lock lock(connections_mutex);
+ connections.push_back(connection);
+#ifdef DEBUG
+ cerr << __FILE__ << "(" << __LINE__ << ")"
+ << ": real_run(): lista de conexiones" << endl;
+ for (ConnectionList::const_iterator i = connections.begin();
+ i != connections.end(); i++) {
+ cerr << "\t " << *i << endl;
+ }
+#endif // DEBUG