fix: segv from when empty client

This commit is contained in:
Talyx
2022-02-05 17:13:19 +03:00
parent e0c0484b60
commit 93003724d2
2 changed files with 8 additions and 2 deletions

View File

@@ -8,6 +8,7 @@ Client::Client()
done = false; done = false;
this->_fd = -1; this->_fd = -1;
this->_sended = 0; this->_sended = 0;
_to_send_char = NULL;
} }
Client::Client(char *str) Client::Client(char *str)
@@ -17,11 +18,14 @@ Client::Client(char *str)
this->_fd = -1; this->_fd = -1;
this->_buff = str; this->_buff = str;
this->_sended = 0; this->_sended = 0;
_to_send_char = NULL;
} }
Client::Client(char *str, ServerConfig *config) Client::Client(char *str, ServerConfig *config)
{ {
_to_send_char = NULL;
allRead = false; allRead = false;
done = false; done = false;
this->_fd = -1; this->_fd = -1;
@@ -234,6 +238,7 @@ void Client::clear(void)
_bodyToSend = ""; _bodyToSend = "";
_headerToSend = ""; _headerToSend = "";
_toSend = ""; _toSend = "";
if (_to_send_char)
free(_to_send_char); free(_to_send_char);
} }

View File

@@ -87,7 +87,7 @@ void Server::readSocket(Client &client, int fd)
int status; int status;
int bytes_read; int bytes_read;
char buf[BUFFSIZE + 1] = {0}; char buf[BUFFSIZE + 1];
DBOUT << TURQ << "IN readSocket" << RESET << std::endl; DBOUT << TURQ << "IN readSocket" << RESET << std::endl;
DBOUT << "client in readSocket "<< &client << ENDL; DBOUT << "client in readSocket "<< &client << ENDL;
@@ -97,6 +97,7 @@ void Server::readSocket(Client &client, int fd)
client.allRead = true; client.allRead = true;
return; return;
} }
buf[bytes_read + 1] = '\0';
client.setRawData(buf); client.setRawData(buf);
client.increaseRecvCounter(bytes_read); client.increaseRecvCounter(bytes_read);
status = client.parseRequest(); status = client.parseRequest();