From 1ddf07bd63d157bcd879f8eeb4e3d63e30a07bbb Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 27 May 2005 00:43:24 +0000 Subject: r7000: only keep session data if not empty - this saves us using lots of memory needlessly (This used to be commit cee3caba9239b1e66c7f50d3f808b53e9fc22a53) --- source4/web_server/http.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'source4/web_server') diff --git a/source4/web_server/http.c b/source4/web_server/http.c index 5dd9e35edd..fd9b1be67f 100644 --- a/source4/web_server/http.c +++ b/source4/web_server/http.c @@ -780,13 +780,19 @@ void http_process_input(struct websrv_context *web) talloc_free(web->session->data); web->session->data = talloc_zero(web->session, struct MprVar); mprSetCtx(web->session->data); - mprCopyVar(web->session->data, &esp->variables[ESP_SESSION_OBJ], MPR_DEEP_COPY); - - /* setup the timeout for the session data */ - talloc_free(web->session->te); - web->session->te = event_add_timed(web->conn->event.ctx, web->session, - timeval_current_ofs(web->session->lifetime, 0), - session_timeout, web->session); + if (esp->variables[ESP_SESSION_OBJ].properties == NULL || + esp->variables[ESP_SESSION_OBJ].properties[0].numItems == 0) { + talloc_free(web->session); + web->session = NULL; + } else { + mprCopyVar(web->session->data, &esp->variables[ESP_SESSION_OBJ], + MPR_DEEP_COPY); + /* setup the timeout for the session data */ + talloc_free(web->session->te); + web->session->te = event_add_timed(web->conn->event.ctx, web->session, + timeval_current_ofs(web->session->lifetime, 0), + session_timeout, web->session); + } } talloc_free(esp); -- cgit