projects
/
oweals
/
uclient.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
uclient-fetch: add option to read POST data from file
[oweals/uclient.git]
/
uclient-http.c
diff --git
a/uclient-http.c
b/uclient-http.c
index ebe77582368ebee4f7a50482f49b154b12371b16..c1f722878df76dc5452f34032ff9aac4f52e9d91 100644
(file)
--- a/
uclient-http.c
+++ b/
uclient-http.c
@@
-149,7
+149,8
@@
static void uclient_http_disconnect(struct uclient_http *uh)
if (uh->ssl)
ustream_free(&uh->ussl.stream);
ustream_free(&uh->ufd.stream);
if (uh->ssl)
ustream_free(&uh->ussl.stream);
ustream_free(&uh->ufd.stream);
- close(uh->ufd.fd.fd);
+ if(uh->ufd.fd.fd)
+ close(uh->ufd.fd.fd);
uh->us = NULL;
}
uh->us = NULL;
}
@@
-198,7
+199,8
@@
static void uclient_notify_eof(struct uclient_http *uh)
return;
}
return;
}
- if (uh->content_length < 0 && uh->read_chunked >= 0)
+ if ((uh->content_length < 0 && uh->read_chunked >= 0) ||
+ uh->content_length == 0)
uh->uc.data_eof = true;
uclient_backend_set_eof(&uh->uc);
uh->uc.data_eof = true;
uclient_backend_set_eof(&uh->uc);
@@
-1173,8
+1175,15
@@
int uclient_http_redirect(struct uclient *cl)
if (!url)
return false;
if (!url)
return false;
- free(cl->url);
- cl->url = url;
+ if (cl->proxy_url) {
+ free(cl->proxy_url);
+ cl->proxy_url = url;
+ }
+ else {
+ free(cl->url);
+ cl->url = url;
+ }
+
if (uclient_http_connect(cl))
return -1;
if (uclient_http_connect(cl))
return -1;