From 817d2888d7f38dec4e8549def19bd2274ad1f9e7 Mon Sep 17 00:00:00 2001 From: Nick White Date: Thu, 1 Sep 2011 20:21:20 +0100 Subject: Fix cookie saving, update TODO --- TODO | 4 +++- gui.tcl | 0 util.c | 10 +++++++--- 3 files changed, 10 insertions(+), 4 deletions(-) mode change 100644 => 100755 gui.tcl diff --git a/TODO b/TODO index 8bd702f..0da61ee 100644 --- a/TODO +++ b/TODO @@ -17,7 +17,9 @@ use wide string functions when dealing with stuff returned over http; it's known bug in get(): if the \r\n\r\n after http headers is cut off between recv buffers -create a tcl/tk gui wrapper, which asks for the book downloader to run, the book id, and then shows output of stdout & stderr as it runs +what happens if we receive not a http header? does recv loop forever, in a memory killing manner? + +print stderr in gui as well package for osx and windows diff --git a/gui.tcl b/gui.tcl old mode 100644 new mode 100755 diff --git a/util.c b/util.c index 759e25b..6cc0075 100644 --- a/util.c +++ b/util.c @@ -72,9 +72,13 @@ int get(char *host, char *path, char *sendcookie, char *savecookie, char **buf) while((res = recv(fd, t, BUFSIZ, 0)) > 0) { if(sscanf(t, "HTTP/%d.%d %d", &i, &i, &p) == 3 && p != 200) return 0; - if(savecookie != NULL && - (t2 = strstr(t, "Set-Cookie: ")) != NULL && sscanf(t2, m, c)) - strncat(savecookie, c, COOKIEMAX); + t2 = t; + if(savecookie != NULL) { + while((t2 = strstr(t2, "Set-Cookie: ")) && sscanf(t2, m, c)) { + strncat(savecookie, c, COOKIEMAX); + t2++; + } + } if((t2 = strstr(t, "\r\n\r\n")) != NULL && (t2 - t) < (signed)res) { t2+=4; l = res - (t2 - t); -- cgit v1.2.3