mirror of
https://github.com/sigmasternchen/CFloor
synced 2025-03-15 20:28:56 +00:00
skip code that might cause problems on dropConnection while parsing
This commit is contained in:
parent
df7ef63ae1
commit
2ef24de4b1
1 changed files with 25 additions and 22 deletions
|
@ -305,8 +305,6 @@ void safeEndConnection(struct connection* connection, bool force) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// connection has to be locked beforehand
|
// connection has to be locked beforehand
|
||||||
// TODO: Look into how self can be joined
|
|
||||||
// (because this function will be called in response or encoder thread)
|
|
||||||
void resetPersistentConnection(struct connection* connection) {
|
void resetPersistentConnection(struct connection* connection) {
|
||||||
debug("networking: resetting persistent connection to initial state");
|
debug("networking: resetting persistent connection to initial state");
|
||||||
|
|
||||||
|
@ -824,29 +822,34 @@ void dataHandler(int signo) {
|
||||||
buffer[length++] = c;
|
buffer[length++] = c;
|
||||||
last = c;
|
last = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!dropConnection) {
|
||||||
|
// only check read return value (tmp) if the connection shouldn't be dropped
|
||||||
|
// because tmp might be set before a break
|
||||||
|
|
||||||
|
if (tmp < 0) {
|
||||||
|
switch(errno) {
|
||||||
|
case EAGAIN:
|
||||||
|
// no more data to be ready
|
||||||
|
// ignore this error
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
dropConnection = true;
|
||||||
|
error("networking: error reading socket: %s", strerror(errno));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if (tmp == 0) {
|
||||||
|
debug("networking: connection ended");
|
||||||
|
|
||||||
if (tmp < 0) {
|
buffer[length] = '\0';
|
||||||
switch(errno) {
|
debug("networking: buffer: '%s'", buffer);
|
||||||
case EAGAIN:
|
|
||||||
// no more data to be ready
|
|
||||||
// ignore this error
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
dropConnection = true;
|
|
||||||
error("networking: error reading socket: %s", strerror(errno));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else if (tmp == 0) {
|
|
||||||
debug("networking: connection ended");
|
|
||||||
|
|
||||||
buffer[length] = '\0';
|
|
||||||
debug("networking: buffer: '%s'", buffer);
|
|
||||||
dropConnection = true;
|
|
||||||
}
|
|
||||||
if (length > 0) {
|
|
||||||
if (dumpHeaderBuffer(&(buffer[0]), length, connection) < 0) {
|
|
||||||
dropConnection = true;
|
dropConnection = true;
|
||||||
}
|
}
|
||||||
|
if (length > 0) {
|
||||||
|
if (dumpHeaderBuffer(&(buffer[0]), length, connection) < 0) {
|
||||||
|
dropConnection = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dropConnection) {
|
if (dropConnection) {
|
||||||
|
|
Loading…
Reference in a new issue