This PR lets a project change its URL from http: to https: without user involvement.
But the old URL can be present in various places, leading to errors.
This commit fixes these problem, mostly by using a URL comparison function
(urls_match()) that ignores the protocol prefix,
and by changing lookup_project() to ignore the prefix.
The places are:
- task state files
- account manager replies
- active tasks in state file
- master URLs in command-line args
- master URLs in config file (e.g. GPU exclusion)
- GUI RPCs that specify a project
If the user typed an extremely long URL into the
Attach to Account Manager wizard, a buffer overrun could result.
There were several places in the code that assumed user-entered
URLs are small (e.g. 256 chars):
- canonicalize_master_url.cpp()
- several GUI RPC interfaces, when generating XML request message
- URL-escaping (not relevant here, but fix anyway)
Change all these to stay within buffers regardless of URL size.
Note: do this by truncation.
This will cause error messages like "can't connect to project"
rather than saying the URL is too long. That's OK.
http://username:passwd@host.dom.dom:port/file
(we weren't parsing the username and password before).
- client: fix the feature that lets you exclude a list of hosts
from going through the proxy.
svn path=/trunk/boinc/; revision=19513