Commit Graph

363 Commits

Author SHA1 Message Date
Rob Kendrick
e7c5e16b9b Performance improvements: rather than calling content_clean() every poll, we now call it no more frequently than once every 5 seconds. Additionally, we cache the result of talloc_total_size() in content_clean() rather than calculating it twice. On large documents, this function took 25% of CPU time. This makes the fetching/rendering/scrolling/redrawing of large documents over twice as fast.
svn path=/trunk/netsurf/; revision=4527
2008-07-07 14:05:29 +00:00
James Bursa
f87138e5de Remove two unused functions.
svn path=/trunk/netsurf/; revision=4333
2008-06-14 23:17:50 +00:00
James Bursa
3d590b1efa Handle errors returned by curl_multi_perform(), such as out of memory, instead of exiting.
svn path=/trunk/netsurf/; revision=4329
2008-06-14 21:43:52 +00:00
John Mark Bell
6168417b80 Fix cache control
svn path=/trunk/netsurf/; revision=4288
2008-06-06 23:51:51 +00:00
John Mark Bell
5015eb6e87 Squash warning
svn path=/trunk/netsurf/; revision=4257
2008-06-03 22:17:35 +00:00
James Bursa
8282253a54 Move struct cache_data from fetch to content as it is no longer needed by fetch. Make it a member instead of pointer in struct content.
svn path=/trunk/netsurf/; revision=4246
2008-06-03 01:10:46 +00:00
James Bursa
21a3c99d3d Remove unused members of struct fetch (were moved to fetch_curl but not removed from here).
svn path=/trunk/netsurf/; revision=4232
2008-05-31 16:57:53 +00:00
James Bursa
ef6690ad72 Stop processing headers and sending FETCH_HEADER if fetch was aborted.
svn path=/trunk/netsurf/; revision=4231
2008-05-31 16:52:37 +00:00
James Bursa
b9bce3fa31 Fix freeing of etag data.
svn path=/trunk/netsurf/; revision=4229
2008-05-31 15:52:22 +00:00
John Mark Bell
f4be61553c Fix handling of cache control data
svn path=/trunk/netsurf/; revision=4227
2008-05-30 11:09:50 +00:00
James Bursa
ae992eab4d Add new fetch callback FETCH_HEADER for headers and move as much header parsing as possible from fetch_curl.c to fetchcache.c. This simplifies fetch_curl.c and will make it possible to store response headers in future.
svn path=/trunk/netsurf/; revision=4226
2008-05-30 04:11:16 +00:00
John Mark Bell
a76164ab51 Wrap very verbose logging with #ifdef, so as to silence it.
svn path=/trunk/netsurf/; revision=4225
2008-05-29 19:32:31 +00:00
John Tytgat
793d466edf - introduction of SLEN()
- enforce result of url_normalize() being NULL on failure
- plug memory leak when url_normalize() fails

svn path=/trunk/netsurf/; revision=4200
2008-05-25 15:51:30 +00:00
John Mark Bell
c24b426881 No longer suppress the default Accept: header.
This fixes all those sites that brokenly assume that it's required and thus break when the client doesn't send one (here's looking at you royalmail.com).
libcurl's default Accept header is "*/*", which is semantically equivalent to not sending a header at all (no header implies the client accepts all content types).

svn path=/trunk/netsurf/; revision=4196
2008-05-24 10:09:02 +00:00
John Mark Bell
fbb483e0ff Fix type of value_was_quoted member of cookie_data struct.
svn path=/trunk/netsurf/; revision=4166
2008-05-16 10:27:01 +00:00
John Mark Bell
74a1095cd6 Remove unnecessary includes
svn path=/trunk/netsurf/; revision=4144
2008-05-11 10:09:44 +00:00
John Mark Bell
dc85ddb0a8 Launch redirects to unsupported URLs in other applications.
svn path=/trunk/netsurf/; revision=4098
2008-04-19 11:07:42 +00:00
Rob Kendrick
59641def82 const fixes in plotters and history core
svn path=/trunk/netsurf/; revision=4083
2008-04-07 11:15:09 +00:00
James Shaw
9402e110e9 Implement sprite support for GTK using librosprite
svn path=/trunk/netsurf/; revision=4051
2008-03-29 13:30:04 +00:00
John Mark Bell
46d135f42d Squash warning
svn path=/trunk/netsurf/; revision=3988
2008-03-19 18:36:16 +00:00
John Mark Bell
d260420249 Squash warning
svn path=/trunk/netsurf/; revision=3983
2008-03-19 17:36:07 +00:00
John Mark Bell
6cf4ce640c Squash warning
svn path=/trunk/netsurf/; revision=3982
2008-03-19 17:29:34 +00:00
John Mark Bell
9597b5359c Drop support for URL file versions below 1.06
svn path=/trunk/netsurf/; revision=3945
2008-03-13 18:25:41 +00:00
John Mark Bell
2dadb5fac8 Forward compatible Cookie file loading/saving
Reduce amount of magic numbers

svn path=/trunk/netsurf/; revision=3944
2008-03-13 18:14:05 +00:00
Rob Kendrick
4ec38922ac Change meaning of c->redraw_time to be the earliest time to reflow during page asset fetch. Have the time selected vary depending on how long the last reflow took.
svn path=/trunk/netsurf/; revision=3925
2008-03-11 00:14:39 +00:00
Rob Kendrick
fed99c2cb5 jmb's rework of data: URL handling
svn path=/trunk/netsurf/; revision=3890
2008-03-06 11:28:00 +00:00
Rob Kendrick
58ee433b67 Add another check for malformed data: URLs
svn path=/trunk/netsurf/; revision=3889
2008-03-05 23:09:36 +00:00
Rob Kendrick
b168d636d0 Many data: fixes. Acid2 no longer crashes NetSurf.
svn path=/trunk/netsurf/; revision=3888
2008-03-05 22:57:46 +00:00
Rob Kendrick
c9bd38f5dd Check for calloc() failing
svn path=/trunk/netsurf/; revision=3885
2008-03-05 15:01:42 +00:00
Rob Kendrick
0e43415013 Use curl_free() when freeing data: URLs that are URL-encoded instead of using free()
svn path=/trunk/netsurf/; revision=3884
2008-03-05 14:57:33 +00:00
Rob Kendrick
8e79665248 Initial attempt at implementing data: URLs. Needs cleaning and verifying that I'm using the fetcher API correctly. Appears to work, though.
svn path=/trunk/netsurf/; revision=3882
2008-03-05 14:21:29 +00:00
John Mark Bell
3986abd20b Add testcase for non-fqdn -- already passes, but may as well keep it for regression testing.
svn path=/trunk/netsurf/; revision=3877
2008-03-03 13:21:02 +00:00
Michael Drake
bae61d9224 Periodically reflow the page while fetching a page's objects. Make buffer all rendering default.
svn path=/trunk/netsurf/; revision=3874
2008-02-29 23:03:26 +00:00
John Mark Bell
85bb19c93d Mark old contents as stale if a conditional request succeeded so they'll be flushed from the cache as soon as they're unused.
svn path=/trunk/netsurf/; revision=3872
2008-02-27 19:13:35 +00:00
John Mark Bell
3a79bcb3da Explicitly mark error pages as non-fresh so they'll get purged from the cache ASAP.
svn path=/trunk/netsurf/; revision=3871
2008-02-27 18:48:35 +00:00
John Mark Bell
89793c2171 Make content_reset actually do what it's meant to (i.e. reset the appropriate members)
Fix up CONTENT_MSG_REFRESH scheduled events to gracefully the refresh URL disappearing from under them.

svn path=/trunk/netsurf/; revision=3870
2008-02-27 18:38:41 +00:00
John Mark Bell
7f70acaca6 Silence noisy logging
svn path=/trunk/netsurf/; revision=3830
2008-02-03 18:21:49 +00:00
John Mark Bell
ad6fcea6b0 Add url_fragment to extract fragment from URL
Optionally allow url_compare to ignore fragments in comparison
Fix handling of url_compare result in a few places
Fix redirects which contain fragments in the Location header

svn path=/trunk/netsurf/; revision=3826
2008-02-03 12:04:48 +00:00
John Mark Bell
cc3481a2ff Make core fetching code handle verifiability of transactions
Make core fetching code be responsible for inserting cookies into the urldb
Provide accessor to a fetch's parent url (this is defined as being the URL of the verifiable fetch which caused this one to occur)
Make fetchcache's 3xx handling use the parent url when spawning new fetches

svn path=/trunk/netsurf/; revision=3809
2008-01-30 19:56:41 +00:00
John Mark Bell
9164f247c2 Ensure plq is terminated when looking for an URL path.
Ensure fetchcache_redirect() normalizes the redirect destination.

svn path=/trunk/netsurf/; revision=3807
2008-01-30 01:44:57 +00:00
John Mark Bell
78d194cb77 Rework handling of HTTP redirects -- we now count the number of redirects followed for a given item and abort if a fixed limit is reached. This fixes sites which have pages that redirect to themselves.
Redirect handling is now transparent to clients of fetchcache.

The new scheme works as follows:

1) Request content for URL (fetchcache()
2) Start fetch of content (fetchcache_go()
3) If no redirect, continue through LOADING, READY, DONE etc. states as before
   If redirect, receive NEWPTR for each redirect that occurs, then continue
   through LOADING, READY, DONE etc. states as before.

The upshot of this is that redirects result in extra contents being created. It also means that, until LOADING has been received, the content (and thus the URL being fetched) may change. Therefore, fetchcache clients should expect to have to deal with transient data prior to LOADING occurring.

As a necessary side-effect of this, the HTML object URLs and CSS @import URLs are no longer stored alongside the relevant contents. These URLs can be accessed by interrogating the url member of struct content anyway, so it was a rather redundant scheme before.

svn path=/trunk/netsurf/; revision=3787
2008-01-28 01:35:00 +00:00
John Mark Bell
02e2fab6a3 More work on cookie parser. Our junk value handling is now significantly closer to that of other browsers.
+ Fix infinite loop when encountering a spurious \r
 + Values are only treated as quoted if the first non-whitespace character is "
 + Cookies are inserted into the db in the order of receipt. This brings our 
   Cookie: header ordering closer to other browsers (though this strictly 
   shouldn't matter -- no ordering is defined, other than by path specificity)
 + Fix testcase assertions to cope with new output ordering

svn path=/trunk/netsurf/; revision=3709
2008-01-19 01:51:39 +00:00
John Mark Bell
e5e2eb09f6 Work on cookies to bring our behaviour closer to the spec and other browsers:
+ Improve handling of quoted cookies -- now processes nested quotes correctly
  + Improve cookie output -- now knows which version it's outputting for and 
    processes things appropriately
  + Add assertion that we're dealing with a domain cookie in the case where the
    cookie domain and URL host part don't match during validation.
  + Tidy up fix for broken domain cookie setting -- it's now less confusing to 
    read.
  + Preserve cookie value quoting, regardless of its necessity.
  + Modify Cookie file format to save value_was_quoted flag -- version number 
    bumped to 101.
  + Add more testcases.

svn path=/trunk/netsurf/; revision=3708
2008-01-17 20:00:55 +00:00
John Mark Bell
2fa8e656a1 The previous fix was broken -- URI paths include the leafname.
Make url_path() return the full path (including the leafname).
Defaulted cookie path attributes have the leafname and trailing slash stripped.
Add testcase for defaulted path.
Fix testcase conditions for paths with leafnames.

svn path=/trunk/netsurf/; revision=3693
2008-01-07 12:01:11 +00:00
John Mark Bell
74078b6e36 Fix potential crash in urldb_dump()
Relax 4.3.2(i) checking (Cookie path must be a prefix of URL path). We now permit a cookie path containing the document leafname -- we strip the leafname from the path.
Make testsuite build again.
Add tests for cookie path checking.

svn path=/trunk/netsurf/; revision=3692
2008-01-07 04:58:06 +00:00
John Mark Bell
d1bf94dc4d Work around sites sending domain cookies for .foo.com from hosts such as bar.bat.foo.com, then expecting domain matching to succeed. This causes me pain.
svn path=/trunk/netsurf/; revision=3637
2007-10-30 23:19:03 +00:00
Vincent Sanders
2f864eeecc Update all source code file headers to reflect GPL version 2 only and contain appropriate licence text
svn path=/trunk/netsurf/; revision=3486
2007-08-08 16:16:03 +00:00
James Bursa
07c54283e3 Move window scaling from platform-specific code to desktop/browser.c. Modify gtk gui to handle scaling in the same way as RO.
svn path=/trunk/netsurf/; revision=3478
2007-08-07 03:55:18 +00:00
John Mark Bell
81f3fcbafd Fix crash when building error page -- fetch will be NULL, so fetch_get_referer will fail.
svn path=/trunk/netsurf/; revision=3476
2007-08-06 22:17:04 +00:00
John Mark Bell
40b1c80896 Ensure option strings aren't blank before setting headers: previously, a blank option string could result in "Accept-Language: , *;q=0.1" being sent, for example.
svn path=/trunk/netsurf/; revision=3450
2007-07-21 08:53:00 +00:00