]> code.citadel.org Git - citadel.git/blobdiff - webcit/context_loop.c
* do linebuffered reading from server
[citadel.git] / webcit / context_loop.c
index fd0b0fe045ca1adcba8b556856c3663e15775967..27d03b36db9a4139b368ec8191bc5a38d56d181e 100644 (file)
@@ -32,11 +32,13 @@ void DestroySession(wcsession **sessions_to_kill)
        if ((*sessions_to_kill)->cache_fold != NULL) {
                free((*sessions_to_kill)->cache_fold);
        }
+       DeleteServInfo(&((*sessions_to_kill)->serv_info));
        DeleteHash(&((*sessions_to_kill)->attachments));
        free_march_list((*sessions_to_kill));
        DeleteHash(&((*sessions_to_kill)->hash_prefs));
        DeleteHash(&((*sessions_to_kill)->IconBarSettings));
        DeleteHash(&((*sessions_to_kill)->ServCfg));
+       FreeStrBuf(&((*sessions_to_kill)->ReadBuf));
        FreeStrBuf(&((*sessions_to_kill)->UrlFragment1));
        FreeStrBuf(&((*sessions_to_kill)->UrlFragment2));
        FreeStrBuf(&((*sessions_to_kill)->UrlFragment3));
@@ -318,8 +320,8 @@ void context_loop(int *sock)
                        continue;
                }
 
+               StrBufSanitizeAscii(Line, 'ยง');
                StrBufExtract_token(HeaderName, Line, 0, ':');
-               /*/// TODO: filter bad chars! */
 
                pchs = ChrPtr(Line);
                pch = pchs + StrLength(HeaderName) + 1;
@@ -518,14 +520,11 @@ void context_loop(int *sock)
                }
                else TheSession->httpauth_pass = NewStrBufPlain(httpauth_user, -1);
 
+               TheSession->CLineBuf = NewStrBuf();
                TheSession->hash_prefs = NewHash(1,NULL);       /* Get a hash table for the user preferences */
                pthread_mutex_init(&TheSession->SessionMutex, NULL);
                pthread_mutex_lock(&SessionListMutex);
-               TheSession->urlstrings = NULL;
-               TheSession->vars = NULL;
                TheSession->nonce = rand();
-               TheSession->WBuf = NULL;
-               TheSession->CLineBuf = NewStrBuf();
                TheSession->next = SessionList;
                TheSession->is_mobile = -1;
                SessionList = TheSession;