HTTP_OP::libcurl_exec() opens input and/or output files.
In the normal case these eventually are closed in handle_messages()
when the HTTP op finishes.
But if the call to curl_multi_add_handle() returns an error
(which I believe happens on a connect failure, e.g. if the project is down)
then we need to close the files.
We weren't doing this, possibly leading to running out of file descriptors.
Build it with schannel instead that allows curl to use Windows certificate store and doesn't relay on ca-bundle.crt anymore.
This fixes#4542
Signed-off-by: Vitalii Koshura <lestat.de.lionkur@gmail.com>
With old (7.15) versions of libcurl, args passed to curl_easy_setopt()
(such as the URL) were supposed to remain unchanged until
the operation was done.
Starting with 7.17 it was changed so that curl_easy_setopt()
copied its arguments.
The BOINC client was assuming the latter.
When linked against the former,
URLs would mysteriously change to garbage strings.
I changed things to work with the old libcurl semantics.
so that if you use <http_debug> and filter by project
you don't see other projects' HTTP stuff
- client simulator: cc_config.xml is part of the scenario;
log flags are part of the simulation
svn path=/trunk/boinc/; revision=24410
(contacting google.com and possibly alerting the user)
for "background" HTTP ops. These include:
- periodic account manager requests
- periodic notice RSS feed fetches
- periodic fetch of project list
- periodic fetch of current client version
svn path=/trunk/boinc/; revision=22037
favor those that are partially done
- client: fix crashing bug if a project is detached
while an RSS feed fetch for it is in progress
- code cleanup: switch from /// back to // for comments
(so much for doxygen)
svn path=/trunk/boinc/; revision=21041
During the first pass we learned that the whole process of
proxy detection on Win XP machines could take a few seconds
even with no proxies to be detected, now the proxy detection
code is executed in the same thread that is monitoring for
power change events.
client/
cs_cmdline.cpp
http_curl.cpp
http_curl.h
http_curl_win.h
net_stats.cpp
sysmon_win.cpp, .h
lib/
parse.cpp, .h
proxy_info.cpp, .h
svn path=/trunk/boinc/; revision=18819
this gets called when the op fails, either at initialization or later on;
it clears the project's sched_rpc_pending flag if needed.
This fixes a bug that caused user-requested RPCs to retry every 10 seconds
when the network is down.
- client: if debt-adjust period is too long, reset accounting.
Otherwise we'll get this infinitely.
- API: all optional alpha argument to TEXTURE_DESC::draw()
svn path=/trunk/boinc/; revision=17195
E.g. if you're running a project locally,
while attached to outside projects via a proxy.
Currently accessible only via the Manager's Options dialog.
From Frank Weiler.
svn path=/trunk/boinc/; revision=16061
- scheduler: fix bug in adaptive replication:
if send an unreplicated job to untrusted host,
set both wu.target_nresults and wu.min_quorum to app.target_nresults.
svn path=/trunk/boinc/; revision=15762
A file upload sends request.
The network is down, and something (e.g. a router)
sends a long (> 4KB) error page.
This overruns the 4KB buffer of HTTP_OP::req1.
Solution: keep track of the size of the buffer,
and don't overrun it.
Also move the body of a huge for loop into a separate function.
From Ian Hay.
Fixes#705
svn path=/trunk/boinc/; revision=15744
(this causes confusing output in the Manager,
bytes xferred greater than file size)
- API and client: make boinc_sleep() work regardless of signals
- some code cleanup in http_curl.C
svn path=/trunk/boinc/; revision=14522
estimates are maintained.
The old way took concurrency into account but ignored compression;
the new way does the converse.
- client: maintain new stat: recent average transfer rates.
This track average up/down throughputs
(over wall clock time, not just while xfers are active)
with a half-life of 1 day.
Will eventually add a new pref: don't fetch new work if
either of these is above a threshold
svn path=/trunk/boinc/; revision=13407