ref: 6d354d07e81aa94b3798603093dfa26fac2f6488
parent: 1447b95555d6afa39f7ab04f04f1415f8937d899
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun Sep 18 22:04:13 EDT 2016
webfs: don't use cache connections when posting we cannot retry posts and we do not know for sure if a post had any side effect when we got no status, so always make a new connection for a post request.
--- a/sys/src/cmd/webfs/http.c
+++ b/sys/src/cmd/webfs/http.c
@@ -92,7 +92,7 @@
}
static Hconn*
-hdial(Url *u)
+hdial(Url *u, int cached)
{
char addr[128];
Hconn *h, *p;
@@ -100,20 +100,22 @@
snprint(addr, sizeof(addr), "tcp!%s!%s", u->host, u->port ? u->port : u->scheme);
- qlock(&hpool);
- for(p = nil, h = hpool.head; h; p = h, h = h->next){
- if(strcmp(h->addr, addr) == 0){
- if(p)
- p->next = h->next;
- else
- hpool.head = h->next;
- h->next = nil;
- qunlock(&hpool);
- return h;
+ if(cached){
+ qlock(&hpool);
+ for(p = nil, h = hpool.head; h; p = h, h = h->next){
+ if(strcmp(h->addr, addr) == 0){
+ if(p)
+ p->next = h->next;
+ else
+ hpool.head = h->next;
+ h->next = nil;
+ qunlock(&hpool);
+ return h;
+ }
}
+ hpool.active++;
+ qunlock(&hpool);
}
- hpool.active++;
- qunlock(&hpool);
if(debug)
fprint(2, "hdial [%d] %s\n", hpool.active, addr);
@@ -142,7 +144,7 @@
h->time = 0;
h->cancel = 0;
h->tunnel = 0;
- h->keep = 1;
+ h->keep = cached;
h->len = 0;
h->fd = fd;
h->ctl = ctl;
@@ -643,7 +645,7 @@
}
if(h == nil){
alarm(timeout);
- if((h = hdial(u)) == nil)
+ if((h = hdial(u, qpost!=nil)) == nil)
break;
}
if(h->tunnel){