diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c index 5f062c3b84e57c6f0ed03366418718497ebbcc99..d7e2618e84ef53e947af37c1bb798b42f89d2b5b 100644 --- a/src/sbbs3/websrvr.c +++ b/src/sbbs3/websrvr.c @@ -752,6 +752,9 @@ static void close_request(http_session_t * session) } memset(&session->req,0,sizeof(session->req)); + if(session->subscan!=NULL) + putmsgptrs(&scfg, session->user.number, session->subscan); + FREE_AND_NULL(session->subscan); } static int get_header_type(char *header) @@ -1007,6 +1010,13 @@ void http_logon(http_session_t * session, user_t *usr) else session->user=*usr; + if(session->user.number!=0) { + FREE_AND_NULL(session->subscan); + session->subscan=(subscan_t*)malloc(sizeof(subscan_t)*scfg.total_subs); + if(session->subscan!=NULL) + getmsgptrs(&scfg,session->user.number,session->subscan); + } + if(session->user.number==session->last_user_num) return; @@ -1020,10 +1030,6 @@ void http_logon(http_session_t * session, user_t *usr) putuserrec(&scfg,session->user.number,U_MODEM,LEN_MODEM,"HTTP"); putuserrec(&scfg,session->user.number,U_COMP,LEN_COMP,session->host_name); putuserrec(&scfg,session->user.number,U_NOTE,LEN_NOTE,session->host_ip); - FREE_AND_NULL(session->subscan); - session->subscan=(subscan_t*)malloc(sizeof(subscan_t)*scfg.total_subs); - if(session->subscan!=NULL) - getmsgptrs(&scfg,session->user.number,session->subscan); } session->client.user=session->username; client_on(session->socket, &session->client, /* update existing client record? */TRUE); @@ -1041,9 +1047,6 @@ void http_logoff(http_session_t * session) SAFECOPY(session->username,unknown); logoutuserdat(&scfg, &session->user, time(NULL), session->logon_time); - if(session->subscan!=NULL) - putmsgptrs(&scfg, session->user.number, session->subscan); - FREE_AND_NULL(session->subscan); memset(&session->user,0,sizeof(session->user)); session->last_user_num=session->user.number; }