diff options
| -rw-r--r-- | sys/src/cmd/webcookies.c | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/sys/src/cmd/webcookies.c b/sys/src/cmd/webcookies.c index d95b9d41d..c338fa113 100644 --- a/sys/src/cmd/webcookies.c +++ b/sys/src/cmd/webcookies.c @@ -448,6 +448,27 @@ syncjar(Jar *jar) return 0; } +void +closejar(Jar *jar) +{ + int i; + + if(jar == nil) + return; + expirejar(jar, 0); + if(jar->dirty) + if(syncjar(jar) < 0) + fprint(2, "warning: cannot rewrite cookie jar: %r\n"); + + for(i=0; i<jar->nc; i++) + freecookie(&jar->c[i]); + + free(jar->lockfile); + free(jar->file); + free(jar->c); + free(jar); +} + Jar* readjar(char *file) { @@ -455,6 +476,7 @@ readjar(char *file) Jar *jar; jar = newjar(); + file = estrdup9p(file); lock = emalloc9p(strlen(file)+10); strcpy(lock, file); if((p = strrchr(lock, '/')) != nil) @@ -469,33 +491,12 @@ readjar(char *file) jar->dirty = 0; if(syncjar(jar) < 0){ - free(jar->file); - free(jar->lockfile); - free(jar); + closejar(jar); return nil; } return jar; } -void -closejar(Jar *jar) -{ - int i; - - if(jar == nil) - return; - expirejar(jar, 0); - if(jar->dirty) - if(syncjar(jar) < 0) - fprint(2, "warning: cannot rewrite cookie jar: %r\n"); - - for(i=0; i<jar->nc; i++) - freecookie(&jar->c[i]); - - free(jar->file); - free(jar->c); - free(jar); -} /* * Domain name matching is per RFC2109, section 2: @@ -1152,8 +1153,7 @@ fswrite(Req *r) } } snprint(a->outhttp, AuxBuf, "%J", j); - if(j) - closejar(j); + closejar(j); }else{ if(strlen(a->inhttp)+r->ifcall.count >= AuxBuf){ respond(r, "http headers too large"); |
