some little updates

master
Steffen Pohle 1 week ago
parent 1136480465
commit d93e377544

@ -1,3 +1,7 @@
2026-03-26:
- WebRequestBuffer::GetRequestCmdObj complete values where the pointer
is set.
2026-03-17:
- ssl: somehow ssl is not showing a closed TCP stream.
if the tcp stream closes, we get do not get any error and no data.

@ -30,7 +30,6 @@ WebServerClient::~WebServerClient () {
/// @param _ssl_cert
/// @return
int WebServerClient::Accept (TCP *socket, std::string _ssl_key, std::string _ssl_cert) {
debug ("");
if (ssl) delete ssl;
ssl = NULL;
if (tcp) delete tcp;
@ -52,7 +51,6 @@ int WebServerClient::Accept (TCP *socket, std::string _ssl_key, std::string _ssl
/// @param socket
/// @return
int WebServerClient::Accept (TCP *socket) {
debug ("");
if (ssl) delete ssl;
ssl = NULL;
if (tcp) delete tcp;
@ -76,7 +74,6 @@ WebRequestBuffer *WebServerClient::Loop () {
else {
len = tcp->ReadTimeout(buffer, WEB_READ_BUFFER_SIZE, 20);
}
if (len != 0) debug ("len: %d", len);
if (len < 0) return NULL;
if (len == 0) return &ReqBuffer;
ReqBuffer.AddBuffer (buffer, len);
@ -453,7 +450,6 @@ int WebServer::Loop() {
}
if (tcpclient) {
debug ("new connection ssl_enabled:%d", ssl_enabled);
if (webclients.size() > conf_maxclients) {
printf ("max connections reached. closing connection.\n");
tcpclient->Close();
@ -484,11 +480,8 @@ int WebServer::Loop() {
reqbuffer = webclient->Loop();
if (reqbuffer == NULL) {
debug ("remove client");
// error on loop, remove and delete webclient.
debug ("count webclients:%d", webclients.size());
webclients.remove(webclient);
debug ("count webclients:%d", webclients.size());
delete webclient;
wci = webclients.begin();
if (wci == webclients.end()) break;

@ -64,7 +64,7 @@ int WebRequestBuffer::AddBuffer (char *buffer, int len) {
int WebRequestBuffer::GetBuffer (char **dstptr, int *max) {
// check: valid pointers
if (dstptr == NULL || max == NULL) {
fprintf (stderr, "%s:%d not pointer to buffer or not pointer to a lenght set\n",
fprintf (stderr, "%s:%d no pointer to buffer or no pointer to a lenght set\n",
__FILE__, __LINE__);
return -1;
}
@ -156,15 +156,13 @@ int WebRequestBuffer::GetRequestCmdObj(std::string *cmd, std::string *obj, JSONP
std::string rq = GetRequest();
int secslash = 0;
if (cmd == NULL || obj == NULL || jp == NULL)
errorexit ("Fatal Error cmd:%p obj:%p jp:%p none of these should be NULL\n",
cmd, obj, jp);
secslash = rq.find ('/', 1);
*cmd = rq.substr(1, secslash-1);
*obj = rq.substr(secslash+1, std::string::npos);
if (buffer_pos_data > 0) (*jp).Set(buffer_ptr+buffer_pos_data);
else (*jp).Clear();
if (cmd != NULL) *cmd = rq.substr(1, secslash-1);
if (obj != NULL) *obj = rq.substr(secslash+1, std::string::npos);
if (jp != NULL) {
if (buffer_pos_data > 0) (*jp).Set(buffer_ptr+buffer_pos_data);
else (*jp).Clear();
}
return 1;
}

Loading…
Cancel
Save