chore(net): clean up connection message reading loop

This commit is contained in:
fallenoak 2023-03-23 13:14:59 -05:00
parent e65956486e
commit d35101546e
No known key found for this signature in database
GPG Key ID: 7628F8E61AEA070D

View File

@ -375,19 +375,17 @@ void WowConnection::DoMessageReads() {
// TODO // TODO
while (true) { while (true) {
auto v36 = 2; auto headerSize = 2;
auto v35 = -1; auto size = -1;
if (this->m_readBytes >= 2) { if (this->m_readBytes >= headerSize) {
uint8_t v14; if ((this->m_readBuffer[0] & 0x80) == 0) {
size = (this->m_readBuffer[1] | ((this->m_readBuffer[0] & 0x7F) << 8)) + headerSize;
if (*this->m_readBuffer >= 0) {
v35 = (this->m_readBuffer[1] | ((this->m_readBuffer[0] & 0x7F) << 8)) + 2;
} else { } else {
v36 = 3; headerSize = 3;
if (this->m_readBytes >= 3) { if (this->m_readBytes >= headerSize) {
v35 = (this->m_readBuffer[2] | ((this->m_readBuffer[1] | ((this->m_readBuffer[0] & 0x7F) << 8)) << 8)) + 3; size = (this->m_readBuffer[2] | ((this->m_readBuffer[1] | ((this->m_readBuffer[0] & 0x7F) << 8)) << 8)) + headerSize;
} }
} }
} }
@ -409,15 +407,15 @@ void WowConnection::DoMessageReads() {
} }
} }
int32_t v17; int32_t bytesToRead;
if (v35 >= 0) { if (size >= 0) {
v17 = v35 - this->m_readBytes; bytesToRead = size - this->m_readBytes;
if (this->m_readBufferSize - this->m_readBytes < v35 - this->m_readBytes) { if (this->m_readBufferSize - this->m_readBytes < size - this->m_readBytes) {
v17 = this->m_readBufferSize - this->m_readBytes; bytesToRead = this->m_readBufferSize - this->m_readBytes;
} }
} else { } else {
v17 = v36 - this->m_readBytes; bytesToRead = headerSize - this->m_readBytes;
} }
#if defined(WHOA_SYSTEM_WIN) #if defined(WHOA_SYSTEM_WIN)
@ -426,11 +424,11 @@ void WowConnection::DoMessageReads() {
ssize_t bytesRead; ssize_t bytesRead;
#endif #endif
if (v17 <= 0) { if (bytesToRead <= 0) {
bytesRead = 0; bytesRead = 0;
} else { } else {
while (true) { while (true) {
bytesRead = recv(this->m_sock, reinterpret_cast<char*>(&this->m_readBuffer[this->m_readBytes]), v17, 0x0); bytesRead = recv(this->m_sock, reinterpret_cast<char*>(&this->m_readBuffer[this->m_readBytes]), bytesToRead, 0x0);
if (bytesRead >= 0) { if (bytesRead >= 0) {
break; break;
@ -447,22 +445,22 @@ void WowConnection::DoMessageReads() {
#endif #endif
} }
// TODO if (bytesRead <= 0) {
}
if (bytesRead <= 0 && v17 > 0) {
break; break;
} }
}
// TODO if (this->m_encrypt) {
// TODO encryption
}
this->m_readBytes += bytesRead; this->m_readBytes += bytesRead;
if (v35 >= 0 && this->m_readBytes >= v35) { if (size >= 0 && this->m_readBytes >= size) {
CDataStore msg; CDataStore msg;
msg.m_data = &this->m_readBuffer[v36]; msg.m_data = &this->m_readBuffer[headerSize];
msg.m_alloc = -1; msg.m_alloc = -1;
msg.m_size = v35 - v36; msg.m_size = size - headerSize;
msg.m_read = 0; msg.m_read = 0;
this->AcquireResponseRef(); this->AcquireResponseRef();