+ Command command;
+ try {
+ //Glib::Mutex::Lock lock(socket_mutex);
+ socket >> command;
+ } catch (const ios::failure& e) {
+ // TODO poner buenos codigos de error.
+ error(1000000, "Se desconectó.");
+ return;
+ } catch (const sockerr& e) {
+ error(e.serrno(), e.errstr());
+ return;
+ // Si se cerró el socket.
+ //} catch (const ios::failure& e) {
+ // stop = true;
+ // continue;
+ // Si hay un error al parsear el comando, se envia una respuesta con el
+ // error.
+ } catch (const HTTPError& e) {
+#ifdef DEBUG
+ cerr << __FILE__ << "(" << __LINE__ << ")"
+ << " : real_run() ERROR: status_code = "
+ << e.code << " | reason = " << HTTPMessage::reason(e.code)
+ << " | desc = " << e.what() << endl;
+#endif // DEBUG
+ //Glib::Mutex::Lock lock(socket_mutex);
+ socket << HTTPResponse(e) << flush;
+ continue;
+ }
+ // TODO agregar las verificaciones de abajo a HTTPRequest y padres.
+ // Actualizacion: Estoy usando trim() en casi todos lados, no debería
+ // ser necesario.
+/*
+ // Primera línea no vacía (que debe ser el request).
+ bool is_first = true;
+ while (!stop && socket.getline(buf, BUFSIZ)) {