client->signal_error_received().connect(SigC::slot(on_error_received));
client->run();
char buf[BUFSIZ];
- while (client && cin.getline(buf, BUFSIZ)) {
+ while (cin.getline(buf, BUFSIZ)) {
+ if (!client) {
+ break;
+ }
vector<string> v = String(buf).split(' ');
switch (v.size()) {
case 0:
break;
}
}
+ } catch (const sockerr& e) {
+ cerr << "Socket Error: " << e.operation() << " | serrno = "
+ << e.serrno() << " | errstr = " << e.errstr() << endl;
+ if (e.io()) {
+ cerr << "Es: non-blocking and interrupt io recoverable error."
+ << endl;
+ } else if (e.arg()) {
+ cerr << "Es: incorrect argument supplied. recoverable error."
+ << endl;
+ } else if (e.op()) {
+ cerr << "Es: operational error. recovery difficult." << endl;
+ } else if (e.conn()) {
+ cerr << "Es: connection error." << endl;
+ } else if (e.addr()) {
+ cerr << "Es: address error." << endl;
+ } else if (e.benign()) {
+ cerr << "Es: recoverable read/write error like EINTR etc." << endl;
+ }
+ } catch (const exception& e) {
+ cerr << "Error: " << e.what() << endl;
} catch (const char* e) {
cerr << "Error: " << e << endl;
- } catch (exception& e) {
- cerr << "Error: " << e.what() << endl;
} catch (...) {
cerr << "Error desconocido!" << endl;
}