Commit Graph

768 Commits

Author SHA1 Message Date
Vincent Sanders
4b329697f7 move url database test to test directory
svn path=/trunk/netsurf/; revision=10589
2010-06-29 07:20:12 +00:00
Michael Drake
b010a25771 + Refactor input handling from browser window code into content
handlers.
+ Disentangle all box tree manipulation from browser window
  code and put it where it belongs.
+ Move other content specific and other irrelevant code from
  browser window handling to appropriate places.
+ Put mouse state enum in new mouse header, since it's not just
  used by browser window code, and it is used by treeview
  windows on the treeview branch.

svn path=/trunk/netsurf/; revision=10561
2010-06-04 09:35:08 +00:00
John Mark Bell
0de2013f25 Clean up caches on exit
svn path=/trunk/netsurf/; revision=10494
2010-04-27 06:48:09 +00:00
Vincent Sanders
03bb3e8636 remove _GNU_SOURCE define from everywhere.
strndup is not standard so provide an implementation.

svn path=/trunk/netsurf/; revision=10474
2010-04-24 15:22:17 +00:00
Daniel Silverstone
7eef1a387a Ensure we propagate the error to our client, and then abort the llcache handle, should we fail to find a content when converting a nascent hlcache context into an object
svn path=/trunk/netsurf/; revision=10453
2010-04-22 12:29:15 +00:00
John Mark Bell
014cbd63cc Purge spurious filetype computation
svn path=/trunk/netsurf/; revision=10431
2010-04-18 16:08:32 +00:00
John Mark Bell
3958f3730b Fix failed assertion in content_convert when process_data fails.
svn path=/trunk/netsurf/; revision=10425
2010-04-18 11:04:13 +00:00
John Mark Bell
248a53f6ba Avoid double free when shrink-wrapping source data on fetch completion.
svn path=/trunk/netsurf/; revision=10423
2010-04-17 21:17:08 +00:00
John Mark Bell
06145e570d Fix mismatched free call
svn path=/trunk/netsurf/; revision=10420
2010-04-17 09:05:15 +00:00
Vincent Sanders
448b0275ae Fix file: handling on risc os, gtk, windows and framebuffer frontends
svn path=/trunk/netsurf/; revision=10419
2010-04-16 23:56:53 +00:00
John Mark Bell
01eb197f56 When the fetch system informs its clients that certificate verification has failed, it has already stopped and cleaned up the fetch.
Stop llcache_fetch_cert_error attempting to abort the fetch, as this will result in a double free.

svn path=/trunk/netsurf/; revision=10418
2010-04-16 23:15:22 +00:00
John Mark Bell
be3b246eab Add accessor for quirks
svn path=/trunk/netsurf/; revision=10415
2010-04-16 20:54:57 +00:00
John Mark Bell
bf27f667c9 Add assertion
svn path=/trunk/netsurf/; revision=10414
2010-04-16 20:47:22 +00:00
John Mark Bell
34465a06ab Remove fresh field from struct content
svn path=/trunk/netsurf/; revision=10413
2010-04-16 20:44:44 +00:00
John Mark Bell
e58a7d88f4 Make content_invalidate_reuse_data cause llcache to invalidate cache control data
svn path=/trunk/netsurf/; revision=10412
2010-04-16 20:43:36 +00:00
John Mark Bell
44552e7492 Provide API to invalidate llcache object cache control data
svn path=/trunk/netsurf/; revision=10411
2010-04-16 20:42:10 +00:00
John Mark Bell
ca0daa1a66 Reset fetch state when refetching object.
Ensure that cache control data is invalidated for 401/certificate failure so that conditional headers are not emitted when object is refetched.

svn path=/trunk/netsurf/; revision=10408
2010-04-16 20:08:27 +00:00
John Mark Bell
b008327de1 Improve 401 response handling
svn path=/trunk/netsurf/; revision=10407
2010-04-16 20:00:10 +00:00
John Mark Bell
1c42c0569f Ensure we invalidate cache data and mark objects as complete on failure to fetch.
svn path=/trunk/netsurf/; revision=10402
2010-04-14 20:42:03 +00:00
Daniel Silverstone
2ba2dab3a7 Eat any #fragment in llcache_object_retrieve -- fixing double-fragment issues at the top level, and preventing fragment(ed) redirects from confusing the issue
svn path=/trunk/netsurf/; revision=10399
2010-04-14 14:53:21 +00:00
Daniel Silverstone
b56886d0ee Abstract a number of unsafe iterations of object users into a single safe function call
svn path=/trunk/netsurf/; revision=10398
2010-04-14 10:56:44 +00:00
John Mark Bell
3840e3911b Stop leaking hlcache handles.
svn path=/trunk/netsurf/; revision=10395
2010-04-13 23:24:07 +00:00
Vincent Sanders
d1cd04a0b9 remove incorrect low level cache release
svn path=/trunk/netsurf/; revision=10391
2010-04-13 16:53:52 +00:00
Michael Drake
f58fa3b2ac Revert last change.
svn path=/trunk/netsurf/; revision=10382
2010-04-12 09:31:34 +00:00
Michael Drake
de6f1a2b2e Make new cache strip the fragment identifier, like fetchcache did.
svn path=/trunk/netsurf/; revision=10381
2010-04-12 09:25:41 +00:00
John Mark Bell
18081664eb Provide API to enable a handle's callback to be replaced
svn path=/trunk/netsurf/; revision=10376
2010-04-11 23:02:49 +00:00
John Mark Bell
4b8c720ac5 Shrink source buffer to final length on fetch completion
svn path=/trunk/netsurf/; revision=10373
2010-04-11 21:26:20 +00:00
John Mark Bell
486731e589 Release low-level cache handle when destroying contents
svn path=/trunk/netsurf/; revision=10372
2010-04-11 20:58:50 +00:00
John Mark Bell
71de3618f1 Implement hlcache_poll(), which drives the low-level cache event loop, and attempts to clean the high-level cache.
Call this, instead of llcache_poll().

svn path=/trunk/netsurf/; revision=10371
2010-04-11 20:21:13 +00:00
John Mark Bell
60d1b74099 Remove redundant todo
svn path=/trunk/netsurf/; revision=10363
2010-04-11 16:39:58 +00:00
John Mark Bell
0650096403 CSS contents may be shared
svn path=/trunk/netsurf/; revision=10362
2010-04-11 16:38:16 +00:00
John Mark Bell
ff8791a3f7 Ensure content can be shared when retrieving from cache
svn path=/trunk/netsurf/; revision=10361
2010-04-11 16:37:39 +00:00
John Mark Bell
7577e2a1e6 Ensure quirks mode matches when retrieving contents from cache
svn path=/trunk/netsurf/; revision=10360
2010-04-11 16:34:23 +00:00
John Mark Bell
ad89d5b263 Copy child charset, if any
svn path=/trunk/netsurf/; revision=10359
2010-04-11 16:23:45 +00:00
John Mark Bell
6a88eaf67a Pedantic whitespace changes
svn path=/trunk/netsurf/; revision=10356
2010-04-11 14:39:26 +00:00
John Mark Bell
fe87225ccf Complete low-level cache cleaner
svn path=/trunk/netsurf/; revision=10355
2010-04-11 14:32:39 +00:00
John Mark Bell
9666787dfa Remove redundant todo
svn path=/trunk/netsurf/; revision=10354
2010-04-11 14:12:13 +00:00
John Mark Bell
a70c67fa35 Support 307 redirects for GET requests
svn path=/trunk/netsurf/; revision=10353
2010-04-11 14:11:33 +00:00
John Mark Bell
863d5c77c3 Forbid redirects to file:/// URLs
svn path=/trunk/netsurf/; revision=10352
2010-04-11 14:06:02 +00:00
John Mark Bell
40bac34ffd Bail out if we're redirected to an URL we can't handle
svn path=/trunk/netsurf/; revision=10351
2010-04-11 14:01:11 +00:00
John Mark Bell
758190f37b Reintroduce redirect limit
svn path=/trunk/netsurf/; revision=10350
2010-04-11 13:58:12 +00:00
John Mark Bell
3470764041 Remove redundant todos
svn path=/trunk/netsurf/; revision=10349
2010-04-11 13:29:02 +00:00
John Mark Bell
737d6ad557 Merge jmb/kill-reentrancy. r=vince
svn path=/trunk/netsurf/; revision=10346
2010-04-11 10:52:18 +00:00
John Mark Bell
b0f1b7b170 Improve const-correctness of fetch_start
svn path=/trunk/netsurf/; revision=10342
2010-04-10 17:13:53 +00:00
John Mark Bell
24c853281d Return cookies to the same level of working/brokenness as they had before new-cache.
svn path=/trunk/netsurf/; revision=10340
2010-04-10 12:24:25 +00:00
John Mark Bell
ee2a5b40ce Use computed POST data when redirecting, instead of original.
Certain redirect methods result in POST being converted to GET.

svn path=/trunk/netsurf/; revision=10339
2010-04-10 11:56:14 +00:00
John Mark Bell
4a4cc0d1bc Introduce content_set_ready.
Make content_convert emit events only if content is in appropriate state.
Remove no-longer-relevant assertion from content_convert.

svn path=/trunk/netsurf/; revision=10330
2010-04-09 18:52:44 +00:00
Daniel Silverstone
b2124867db Kill uninitialized warning about 'type'
svn path=/trunk/netsurf/; revision=10329
2010-04-09 09:10:23 +00:00
Daniel Silverstone
dfae5c33d2 Some more asserts to try and help spot multiple-release of llcache handles
svn path=/trunk/netsurf/; revision=10327
2010-04-09 00:06:36 +00:00
Daniel Silverstone
2b8adb0c8a Move the removal of the retrieval context to prevent a re-entrancy race causing double-release of llcache handles
svn path=/trunk/netsurf/; revision=10307
2010-04-08 13:39:07 +00:00
Daniel Silverstone
4262232956 Fix missing 'break' introduced by 10300
svn path=/trunk/netsurf/; revision=10304
2010-04-08 13:18:50 +00:00
Daniel Silverstone
92bd0d4ce0 Add an assert to clarify a segfault I'm investigating
svn path=/trunk/netsurf/; revision=10303
2010-04-08 13:12:30 +00:00
Daniel Silverstone
5c55264217 Remove todo -- no longer appropriate
svn path=/trunk/netsurf/; revision=10302
2010-04-08 12:24:29 +00:00
Daniel Silverstone
45faa483e5 Ensure an error'd fetch's llcache object is implicitly stale so it is not reused
svn path=/trunk/netsurf/; revision=10301
2010-04-08 12:20:20 +00:00
Daniel Silverstone
6c9e4bea8e Purge FETCH_TYPE which is unused throughout NetSurf. Clearing a todo in llcachec.
svn path=/trunk/netsurf/; revision=10300
2010-04-08 12:16:52 +00:00
Daniel Silverstone
2b1146bcb3 Remove parent from fetches, clearing a todo from llcache.c
svn path=/trunk/netsurf/; revision=10299
2010-04-08 11:47:05 +00:00
Daniel Silverstone
6948496d45 Ensure that aborting or releasing hlcache handles will result in nascent retrieval contexts being cleaned up
svn path=/trunk/netsurf/; revision=10298
2010-04-08 11:21:50 +00:00
John Mark Bell
bba7fbbd9b Abort and release llcache handle on failure to process data.
Make hlcache retrieval ignore erroneous contents.

svn path=/trunk/netsurf/; revision=10296
2010-04-08 07:09:09 +00:00
John Mark Bell
4682f0ccd8 When we've snapshotted an object, make sure we add the *new* object into the list of uncacheable objects, and not the old one. Otherwise, our cache chains end up being corrupted.
svn path=/trunk/netsurf/; revision=10295
2010-04-08 07:08:16 +00:00
Michael Drake
2fba2249ee Add function to test whether hlcache_handle's content is locked.
svn path=/trunk/netsurf/; revision=10287
2010-04-07 18:50:18 +00:00
Michael Drake
bbd757c34a Fix fetch_curl_post_convert() for filename_from_path() returning NULL.
svn path=/trunk/netsurf/; revision=10265
2010-04-07 11:10:55 +00:00
Michael Drake
236b6a15e1 Add mime-type getter.
svn path=/trunk/netsurf/; revision=10259
2010-04-07 09:12:09 +00:00
John Mark Bell
2748fe4f64 Make downloads work again.
svn path=/trunk/netsurf/; revision=10243
2010-04-05 21:35:38 +00:00
John Mark Bell
2dc791a253 Remove redundant content message types and associated data
svn path=/trunk/netsurf/; revision=10241
2010-04-05 10:40:16 +00:00
John Mark Bell
69f02e926f Make the high-level cache drop contents of unacceptable type on the floor.
svn path=/trunk/netsurf/; revision=10238
2010-04-04 17:17:24 +00:00
John Mark Bell
79ce683b4e Most of a stop implementation.
Remaining work:
  1) Clone content_html_data
  2) Cloning content_css_data requires the charset of the old content
  3) Calling hlcache_handle_abort() before a content has been created must clean up the retrieval context.

svn path=/trunk/netsurf/; revision=10236
2010-04-04 12:41:19 +00:00
John Mark Bell
43a99ab683 Constify data parameter to *_process_data
svn path=/trunk/netsurf/; revision=10234
2010-04-03 16:37:36 +00:00
John Mark Bell
49810d8191 Use mutator to modify content's title field.
svn path=/trunk/netsurf/; revision=10231
2010-04-03 11:55:28 +00:00
Vincent Sanders
95e4a737de rationalise the usage of the file scheme
svn path=/trunk/netsurf/; revision=10221
2010-03-31 13:59:57 +00:00
John Mark Bell
9f575c590b Do not abort fetch on receipt of FETCH_ERROR: the fetch has already been destroyed.
Implement LLCACHE_EVENT_ERROR case of hlcache_llcache_callback().

svn path=/trunk/netsurf/; revision=10218
2010-03-30 21:36:39 +00:00
Chris Young
07537e5240 Fix compilation when building WITH_NS_SVG
svn path=/trunk/netsurf/; revision=10213
2010-03-30 18:12:21 +00:00
John Mark Bell
9aca901eb1 The convert stage of a content's state progression no longer reflows the content to the provided dimensions.
It is now defined as converting the content into a state in which it is ready for use.
The user of the content is now responsible for performing an initial reformat (sic) of the content before it can be redrawn.

Purge width/height parameters from hlcache_handle_retrieve/content_convert/*_convert APIs.
Fix up content handlers affected by the above change in semantics.
Ensure that browser_window_callback performs an initial reformat of its content.

svn path=/trunk/netsurf/; revision=10207
2010-03-29 22:33:21 +00:00
John Mark Bell
2a53c4c811 Use hlcache_child_ctx, instead of just hoping that we replicate its members correctly.
Ensure public API documentation is not duplicated.

svn path=/trunk/netsurf/; revision=10206
2010-03-29 21:17:18 +00:00
John Mark Bell
99dee5e3d0 Disable llcache tracing
svn path=/trunk/netsurf/; revision=10201
2010-03-29 06:29:56 +00:00
John Mark Bell
b6f6bc5fdd Fix broken linked list removal.
svn path=/trunk/netsurf/; revision=10200
2010-03-29 06:29:25 +00:00
John Mark Bell
311b458d56 Forbid contents with active fetches from being cleaned.
svn path=/trunk/netsurf/; revision=10199
2010-03-29 06:28:46 +00:00
John Mark Bell
4e2c3a4c39 Exceptionally verbose tracing of llcache operation.
svn path=/trunk/netsurf/; revision=10198
2010-03-29 06:27:37 +00:00
John Mark Bell
57253cdd58 Fixup per review
svn path=/trunk/netsurf/; revision=10196
2010-03-28 23:25:21 +00:00
Daniel Silverstone
66d1418506 Allow us to cache foo?bar when it explicitly allows it. as per rfc2616 13.9
svn path=/trunk/netsurf/; revision=10190
2010-03-28 16:51:47 +00:00
Daniel Silverstone
8effd1cb98 Ensure that finished redirection objects in llcache do not get found by subsequent fetch attempts.
svn path=/trunk/netsurf/; revision=10188
2010-03-28 16:28:28 +00:00
Daniel Silverstone
cb7412181f Replace fetch_poll with llcache_poll throughout. Allow CONTENT_OTHER to complete properly.
svn path=/trunk/netsurf/; revision=10187
2010-03-28 16:00:54 +00:00
Daniel Silverstone
05a4eceae2 Remove fetchcache.[ch]
svn path=/trunk/netsurf/; revision=10183
2010-03-28 15:34:07 +00:00
Daniel Silverstone
270ef59a98 Merge jmb/new-cache; r=dsilvers,rs=vince
svn path=/trunk/netsurf/; revision=10180
2010-03-28 12:56:39 +00:00
Chris Young
033b5d815a Move code which extracts the filename from a given path into frontend.
svn path=/trunk/netsurf/; revision=10139
2010-03-21 13:32:59 +00:00
John Mark Bell
ee833877c5 Rate limit fetch progress notifications.
svn path=/trunk/netsurf/; revision=9962
2010-02-10 00:32:12 +00:00
Vincent Sanders
6990c2cd04 remove uneccissary includes
svn path=/trunk/netsurf/; revision=9931
2010-01-29 11:32:53 +00:00
James Bursa
914eedc11d Don't set proxy option for file: URLs to workaround some versions of libcurl attempting to use it (fixed in latest libcurl). Also unset curl proxy option if it's disabled so the previous xfer's setting isn't retained.
svn path=/trunk/netsurf/; revision=9759
2009-12-25 19:27:22 +00:00
John Mark Bell
b75b2ae8bb Merge r9731:HEAD from branches/MarkieB/gtkmain to trunk.
svn path=/trunk/netsurf/; revision=9737
2009-12-18 20:15:50 +00:00
John Mark Bell
355799ce0b Merge branches/MarkieB/gtkmain to trunk.
svn path=/trunk/netsurf/; revision=9729
2009-12-17 23:55:02 +00:00
John Mark Bell
d88945bc0b Squash leak.
svn path=/trunk/netsurf/; revision=9711
2009-12-02 16:54:17 +00:00
John Mark Bell
d591d8df94 Treat decomposed URLs with no path component as being for the path "/".
svn path=/trunk/netsurf/; revision=9703
2009-11-22 23:25:18 +00:00
John Mark Bell
3f4d79e576 This optimisation was so simple that it was broken.
svn path=/trunk/netsurf/; revision=9696
2009-11-22 14:24:53 +00:00
John Mark Bell
8685cfb3b7 Fix the other half of this NULL dereference issue
svn path=/trunk/netsurf/; revision=9695
2009-11-22 14:21:47 +00:00
John Mark Bell
63848419e2 Ensure urldb file handle is closed on error.
svn path=/trunk/netsurf/; revision=9693
2009-11-22 14:12:03 +00:00
John Mark Bell
eba224e09e Avoid potential NULL deference
svn path=/trunk/netsurf/; revision=9688
2009-11-22 13:52:16 +00:00
John Mark Bell
81c1b0e0df Don't call memcpy when p->segment is NULL
svn path=/trunk/netsurf/; revision=9687
2009-11-22 13:49:43 +00:00
John Mark Bell
54cd21ae0d Realm may be NULL iff there's no WWW-Authenticate header served up with a 401.
Default the realm to the fetch URL in this case. Fixes #2890933

Note for new cache implementation (which is actually capable of utilising response bodies in this situation): if there is no WWW-Authenticate header, serve up the response body immediately -- don't present an authentication dialogue.

svn path=/trunk/netsurf/; revision=9659
2009-11-03 07:03:07 +00:00
John Mark Bell
1c403cb2f8 svgtiny requires separate contents
svn path=/trunk/netsurf/; revision=9615
2009-10-08 12:03:44 +00:00
John Mark Bell
e580e2bea9 Hack around cache issue. The entire cache layer needs a redesign asap.
svn path=/trunk/netsurf/; revision=9460
2009-08-26 11:22:48 +00:00
John Tytgat
2261b616f6 - content/urldb.c(auth_data): Removed;
(prot_space_data): Added, it lives linked in the leaf host_part
  struct and together with its scheme and port (which defins canonical root
  url) and realm this defines a protection space.
  (path_data): Removed auth_data field and replaced by a prot_space_data
  pointer.
  (host_part::prot_space): Added linked list of protection space data
  structs.
  (urldb_get_auth_details): Given an URL fetch fetches its auth.
  (urldb_set_auth_details): Creates or updates the contents of a
  protection space to which given URL belongs.
  (urldb_destroy_host_tree): Delete protection data space structures
  using urldb_destroy_prot_space.
  (urldb_destroy_prot_space): Added.
- content/urldb.h(urldb_get_auth_details): Added realm parameter.
- content/fetchers/fetch_curl.c(fetch_curl_set_options): Update
  urldb_get_auth_details call (we don't know realm at this point).
- content/fetchcache.c(fetchcache_callback, fetchcache_auth): At FETCH_AUTH,
  use realm to determine if we really don't know auth data and if so,
  refetch content.
- content/content.h(struct content): Add content::tried_with_auth.
- content/content.c(content_create): Initialize content::tried_with_auth.
- riscos/401login.c(ro_gui_401login_open): Show known authentication
  data in dialogue so user can see what was wrong with it and correct it.

Solves bug #2830829.

svn path=/trunk/netsurf/; revision=9045
2009-08-04 23:02:23 +00:00
John Tytgat
9d678ef7cd Drop pkg-config on cairo, not needed here. Added const.
svn path=/trunk/netsurf/; revision=8985
2009-08-02 12:07:29 +00:00
Chris Young
0cd96bdd5e Correct definition
svn path=/trunk/netsurf/; revision=8899
2009-07-29 22:00:07 +00:00
Chris Young
d2c29dbe95 Keep a copy of the next_fetcher pointer to avoid a situation where the fetch gets
freed during the poll routine and the next pointer can no longer be read.

svn path=/trunk/netsurf/; revision=8898
2009-07-29 18:51:35 +00:00
John Mark Bell
ddeadd1c02 Merge LibCSS port to trunk.
svn path=/trunk/netsurf/; revision=8752
2009-07-23 23:05:34 +00:00
John Mark Bell
5feb7018c5 Replace parent_url with a pointer to the parent content.
svn path=/trunk/netsurf/; revision=8428
2009-07-10 00:26:37 +00:00
John Mark Bell
ceca548a1d Fix serialisation of page titles.
svn path=/trunk/netsurf/; revision=8313
2009-07-04 18:19:29 +00:00
John Mark Bell
d58baf8ea4 Permit referer to propagate to https hosts from http
svn path=/trunk/netsurf/; revision=7875
2009-06-19 11:15:06 +00:00
John Mark Bell
c1e3fb0bec Remove spurious "domain" variable from urldb_iterate_partial().
Lose unnecessary increment of rptr in cookie domain prefix matching.
Record that, in the long term, we need some kind of TLD service to consult so that (e.g.) .co.uk is not considered a valid domain prefix.

svn path=/trunk/netsurf/; revision=7600
2009-05-28 13:19:07 +00:00
John Mark Bell
059b6a0e15 Make logic surrounding extraction of URL + referer scheme more sensible.
Always require the fetch URL to have a scheme -- without it, we can't find a fetcher.

svn path=/trunk/netsurf/; revision=7597
2009-05-28 11:56:56 +00:00
John Mark Bell
243c1ba03f Limit scope of manually-defined NDEBUG. Purge a bunch of redundant #undef NDEBUG.
svn path=/trunk/netsurf/; revision=7593
2009-05-28 10:39:53 +00:00
John Mark Bell
42e24e8099 s/abort/abort_fetch/
svn path=/trunk/netsurf/; revision=7512
2009-05-14 10:13:20 +00:00
John Mark Bell
53bbe5fb9e Fix url completion when last character in url bar is a /
svn path=/trunk/netsurf/; revision=7105
2009-04-16 14:12:54 +00:00
John Mark Bell
a763e36d2e It's probably a good idea not to redirect to file:/// URLs
svn path=/trunk/netsurf/; revision=6695
2009-03-04 13:29:54 +00:00
John Mark Bell
a36535f341 Pointless warning avoidance.
svn path=/trunk/netsurf/; revision=6676
2009-03-02 20:32:05 +00:00
John Mark Bell
b98f105b24 Purge WITH_AUTH
svn path=/trunk/netsurf/; revision=6600
2009-02-22 15:13:10 +00:00
John Mark Bell
847b776285 Purge NETSURF_USE_SSL and WITH_SSL
svn path=/trunk/netsurf/; revision=6599
2009-02-22 15:07:50 +00:00
John Mark Bell
16c01d97e9 Log detected state of openssl availability
svn path=/trunk/netsurf/; revision=6595
2009-02-21 23:04:49 +00:00
John Mark Bell
756c393abb Given that the build-time SSL detection can be somewhat inaccurate, attempt to determine whether we can use the SSL_CTX stuff at runtime.
svn path=/trunk/netsurf/; revision=6586
2009-02-21 02:46:47 +00:00
John Mark Bell
79b4cee9d3 Make redirects behave as a NOP wrt the verifiability of fetches.
Apparently, the interweb depends on this.

svn path=/trunk/netsurf/; revision=6542
2009-02-16 20:24:54 +00:00
John Mark Bell
79c0981402 Ensure that neither the current fetch host nor the referrer is an IP address before attempting to domain match them.
svn path=/trunk/netsurf/; revision=6466
2009-02-13 10:49:35 +00:00
John Mark Bell
e5c225f7d9 Even fuzzier domain matching.
svn path=/trunk/netsurf/; revision=6463
2009-02-13 00:25:48 +00:00
John Mark Bell
19321017a9 Document the assumption that all URLs passed into urldb are already normalised. Violate this precondition at your peril.
svn path=/trunk/netsurf/; revision=6371
2009-02-06 02:08:00 +00:00
Michael Drake
c1439ae4e7 Comment content_redraw.
svn path=/trunk/netsurf/; revision=6355
2009-02-02 14:06:51 +00:00
John Mark Bell
6a0a7c346a Let's try that again. Now actually passes the regression tests.
svn path=/trunk/netsurf/; revision=6317
2009-01-31 03:03:50 +00:00
John Mark Bell
e2ebfb72f7 Fix urldb_match_path().
Fix test code.

svn path=/trunk/netsurf/; revision=6316
2009-01-31 02:49:26 +00:00
John Mark Bell
966b402881 urldb_destroy_path_tree() -> iteration
svn path=/trunk/netsurf/; revision=6315
2009-01-31 02:30:28 +00:00
John Mark Bell
9085c458d3 urldb_save_cookie_paths() -> iteration
svn path=/trunk/netsurf/; revision=6314
2009-01-31 02:16:01 +00:00
John Mark Bell
71e397eb84 Initialising variables helps
svn path=/trunk/netsurf/; revision=6313
2009-01-31 02:13:12 +00:00
John Mark Bell
92b3bdeda0 urldb_delete_cookie_paths() -> iteration
svn path=/trunk/netsurf/; revision=6312
2009-01-31 02:12:06 +00:00
John Mark Bell
45b222ab50 Make urldb_dump_paths iterate
svn path=/trunk/netsurf/; revision=6311
2009-01-31 02:02:01 +00:00
John Mark Bell
a1d409d922 Make urldb_match_path() iterate.
svn path=/trunk/netsurf/; revision=6310
2009-01-31 01:57:15 +00:00
John Mark Bell
376ef0ca47 Make urldb_iterate_entries_path use iteration
svn path=/trunk/netsurf/; revision=6304
2009-01-30 19:58:46 +00:00
John Mark Bell
e5c07a3a82 Pedantic linewrapping
svn path=/trunk/netsurf/; revision=6303
2009-01-30 19:47:15 +00:00
John Mark Bell
29fac74dcc Make urldb_iterate_partial_path iterate over the tree and not recurse.
svn path=/trunk/netsurf/; revision=6302
2009-01-30 19:43:54 +00:00
John Mark Bell
ffe288e50b This logic looked entirely wrong. Fix it to be more sane. If this breaks things, blame the lack of commentary.
svn path=/trunk/netsurf/; revision=6301
2009-01-30 19:09:26 +00:00
John Mark Bell
a2fbddea60 Minor optimisation
svn path=/trunk/netsurf/; revision=6300
2009-01-30 18:50:55 +00:00
John Mark Bell
a3f46b12ef Iterate when counting/writing out paths.
svn path=/trunk/netsurf/; revision=6299
2009-01-30 18:48:55 +00:00
John Mark Bell
f7f19ab0ed Squash strict-aliasing warning in the most disgusting way possible.
svn path=/trunk/netsurf/; revision=6070
2009-01-15 16:00:16 +00:00
John Mark Bell
3a56b67d95 Add missing #include.
Fix guard macro -- how long has this been wrong, I wonder?

svn path=/trunk/netsurf/; revision=6069
2009-01-15 15:58:35 +00:00
Daniel Silverstone
4e3951660f Silence a bunch of warnings caused by cURL's typecheck-gcc stuff being strict and in one case cURL simply being daft (whoever heard of a signed HTTP response code?).
svn path=/trunk/netsurf/; revision=5991
2009-01-08 10:36:11 +00:00
John Mark Bell
31e6afe6ef Remove noisy logging of http headers
svn path=/trunk/netsurf/; revision=5672
2008-11-09 19:20:08 +00:00
John Mark Bell
79fdbab192 Jump through hoops, potentially squashing warnings.
svn path=/trunk/netsurf/; revision=5569
2008-10-13 23:45:08 +00:00
Daniel Silverstone
5c01ca3306 Better, safer fix for the type punning issue
svn path=/trunk/netsurf/; revision=5562
2008-10-13 16:39:54 +00:00
Daniel Silverstone
1108d1d1c5 Fix type-punning warning in fetch_data.c
svn path=/trunk/netsurf/; revision=5561
2008-10-13 16:27:45 +00:00
Daniel Silverstone
eaa744c0d2 Remove urldb_search_remove. Added hint for where to find it if we need it in future
svn path=/trunk/netsurf/; revision=5531
2008-10-10 11:54:37 +00:00
François Revel
54a49823b5 Revert r5478, I didn't notice content struct had a mime_type field.
svn path=/trunk/netsurf/; revision=5480
2008-10-03 04:30:47 +00:00
François Revel
209c72b011 Add a function to tell the mime type for a content type.
svn path=/trunk/netsurf/; revision=5478
2008-10-03 03:40:42 +00:00
John Tytgat
2d1481fafc 'unsigned long' -> 'colour' where it made sense.
svn path=/trunk/netsurf/; revision=5459
2008-09-28 22:37:13 +00:00
Daniel Silverstone
3f5d902edd Merged revisions 5309-5406,5409-5422 via svnmerge from
svn://svn.netsurf-browser.org/branches/vince/netsurf-fb

........
  r5309 | vince | 2008-09-13 10:59:10 +0100 (Sat, 13 Sep 2008) | 2 lines
  
  first stab at framebuffer frontend
........
  r5313 | vince | 2008-09-14 15:08:52 +0100 (Sun, 14 Sep 2008) | 2 lines
  
  add line plotters
........
  r5314 | vince | 2008-09-14 15:28:12 +0100 (Sun, 14 Sep 2008) | 2 lines
  
  add rectangle plot to 16bpp plotters
........
  r5315 | vince | 2008-09-14 19:58:57 +0100 (Sun, 14 Sep 2008) | 2 lines
  
  improve 16bpp image plot
........
  r5316 | vince | 2008-09-15 00:35:32 +0100 (Mon, 15 Sep 2008) | 2 lines
  
  abstract the os specific framebuffer init
........
  r5317 | vince | 2008-09-15 11:18:51 +0100 (Mon, 15 Sep 2008) | 2 lines
  
  first cut of linux frontend
........
  r5318 | vince | 2008-09-15 12:01:00 +0100 (Mon, 15 Sep 2008) | 2 lines
  
  remove junk includes
........
  r5319 | vince | 2008-09-15 12:09:02 +0100 (Mon, 15 Sep 2008) | 2 lines
  
  make plotters OS agnostic again
........
  r5322 | vince | 2008-09-15 15:55:01 +0100 (Mon, 15 Sep 2008) | 2 lines
  
  Linux frontend operates
........
  r5323 | vince | 2008-09-15 16:32:47 +0100 (Mon, 15 Sep 2008) | 2 lines
  
  abstract out OS specific input
........
  r5326 | vince | 2008-09-15 19:21:01 +0100 (Mon, 15 Sep 2008) | 2 lines
  
  Improve linux mode setting
........
  r5329 | vince | 2008-09-15 21:13:33 +0100 (Mon, 15 Sep 2008) | 2 lines
  
  improve text clipping
........
  r5339 | vince | 2008-09-16 00:07:57 +0100 (Tue, 16 Sep 2008) | 2 lines
  
  possibly fix text clipping issue
........
  r5342 | vince | 2008-09-16 00:39:36 +0100 (Tue, 16 Sep 2008) | 2 lines
  
  consolidate polygon plotters
........
  r5344 | dsilvers | 2008-09-16 10:21:06 +0100 (Tue, 16 Sep 2008) | 1 line
  
  Fix up the framebuffer target makefile a bit more, add some config options for it
........
  r5345 | dsilvers | 2008-09-16 10:22:19 +0100 (Tue, 16 Sep 2008) | 1 line
  
  Ensure the appropriate frontend is selected when building framebuffer
........
  r5346 | dsilvers | 2008-09-16 10:27:16 +0100 (Tue, 16 Sep 2008) | 1 line
  
  Update build system to support targetting separate framebuffer frontends in different build trees, update executable to be nsfb-blah
........
  r5350 | vince | 2008-09-16 17:15:04 +0100 (Tue, 16 Sep 2008) | 1 line
  
  Add -g to provide symbols for framebuffer link
........
  r5351 | vince | 2008-09-16 17:17:09 +0100 (Tue, 16 Sep 2008) | 1 line
  
  framebuffer scheduler now works, plotters tweaked, gui tracks window redraw requirements better, keypresses not duplicated under linux fb
........
  r5352 | dsilvers | 2008-09-16 17:38:53 +0100 (Tue, 16 Sep 2008) | 1 line
  
  Ensure we only allow one fetcher at a time
........
  r5361 | vince | 2008-09-17 11:48:44 +0100 (Wed, 17 Sep 2008) | 2 lines
  
  initial cursor support
........
  r5362 | vince | 2008-09-17 13:56:47 +0100 (Wed, 17 Sep 2008) | 2 lines
  
  add mouse handling
........
  r5363 | vince | 2008-09-17 14:14:44 +0100 (Wed, 17 Sep 2008) | 2 lines
  
  add framebuffer resources
........
  r5364 | vince | 2008-09-17 17:12:21 +0100 (Wed, 17 Sep 2008) | 2 lines
  
  add reasonable pointer
........
  r5366 | vince | 2008-09-17 17:17:25 +0100 (Wed, 17 Sep 2008) | 2 lines
  
  fix pointer alpha
........
  r5370 | vince | 2008-09-18 13:43:53 +0100 (Thu, 18 Sep 2008) | 2 lines
  
  warning squash and cleanup ready for trunk merge
........
  r5375 | vince | 2008-09-19 14:58:43 +0100 (Fri, 19 Sep 2008) | 2 lines
  
  Working mouse navigation
........
  r5377 | vince | 2008-09-20 14:06:22 +0100 (Sat, 20 Sep 2008) | 2 lines
  
  Improve scrolling
........
  r5378 | vince | 2008-09-20 14:46:46 +0100 (Sat, 20 Sep 2008) | 2 lines
  
  fix redraw issues with scrolling
........
  r5380 | vince | 2008-09-20 17:08:43 +0100 (Sat, 20 Sep 2008) | 3 lines
  
  Alter panning to use its own flag so it doesnt cause invalid redraw 
  operations 
........
  r5381 | vince | 2008-09-20 21:52:45 +0100 (Sat, 20 Sep 2008) | 2 lines
  
  add dummy framebuffer
........
  r5383 | vince | 2008-09-21 00:00:15 +0100 (Sun, 21 Sep 2008) | 2 lines
  
  fix segfault when cursor is off teh bottom of teh screen
........
  r5384 | vince | 2008-09-21 00:06:08 +0100 (Sun, 21 Sep 2008) | 2 lines
  
  fix off by one in pointer fix
........
  r5385 | vince | 2008-09-21 00:25:09 +0100 (Sun, 21 Sep 2008) | 2 lines
  
  when fixing bloody silly off by one errors remember to fix *both* references
........
  r5387 | vince | 2008-09-21 00:38:13 +0100 (Sun, 21 Sep 2008) | 2 lines
  
  last try at stopping the pointer segfault
........
  r5388 | vince | 2008-09-21 16:24:18 +0100 (Sun, 21 Sep 2008) | 2 lines
  
  improve vertical text clipping
........
  r5392 | vince | 2008-09-21 23:11:51 +0100 (Sun, 21 Sep 2008) | 2 lines
  
  Improve text plotters
........
  r5393 | vince | 2008-09-21 23:34:38 +0100 (Sun, 21 Sep 2008) | 2 lines
  
  fix 32bpp line plotting
........
  r5394 | vince | 2008-09-22 00:00:03 +0100 (Mon, 22 Sep 2008) | 2 lines
  
  Fix off by one error in line plotting clipping
........
  r5397 | vince | 2008-09-22 13:46:22 +0100 (Mon, 22 Sep 2008) | 2 lines
  
  Fix bitmap tileing
........
  r5398 | vince | 2008-09-22 17:46:02 +0100 (Mon, 22 Sep 2008) | 2 lines
  
  enable knockout renderer
........
  r5399 | vince | 2008-09-22 18:43:48 +0100 (Mon, 22 Sep 2008) | 2 lines
  
  ensure clipping region lies within window, caused by knockout renderer
........
  r5400 | vince | 2008-09-22 19:20:25 +0100 (Mon, 22 Sep 2008) | 2 lines
  
  update cursor to one swiped from X windows
........
  r5405 | vince | 2008-09-23 09:09:05 +0100 (Tue, 23 Sep 2008) | 2 lines
  
  fix vertical scroll limit
........
  r5412 | dsilvers | 2008-09-23 10:53:14 +0100 (Tue, 23 Sep 2008) | 1 line
  
  Revert noisy fetcher patch
........
  r5413 | dsilvers | 2008-09-23 10:58:00 +0100 (Tue, 23 Sep 2008) | 1 line
  
  Add header guards
........
  r5414 | dsilvers | 2008-09-23 11:31:31 +0100 (Tue, 23 Sep 2008) | 1 line
  
  Tidy the region clipping slightly
........
  r5416 | dsilvers | 2008-09-23 12:05:00 +0100 (Tue, 23 Sep 2008) | 1 line
  
  Rationalise how the framebuffer frontend finds resources and options
........
  r5418 | dsilvers | 2008-09-23 13:59:00 +0100 (Tue, 23 Sep 2008) | 1 line
  
  Ensure options are overridden after load, and squash an fb_gui.c warning
........
  r5419 | dsilvers | 2008-09-23 14:20:07 +0100 (Tue, 23 Sep 2008) | 1 line
  
  Support fb_mode and fb_device options
........
  r5420 | dsilvers | 2008-09-23 14:21:48 +0100 (Tue, 23 Sep 2008) | 1 line
  
  Support option_fb_device in the able frontend
........
  r5421 | dsilvers | 2008-09-23 14:25:17 +0100 (Tue, 23 Sep 2008) | 1 line
  
  Ensure target_blank is disabled
........
  r5422 | dsilvers | 2008-09-23 14:39:00 +0100 (Tue, 23 Sep 2008) | 1 line
  
  Rework linux fb frontend to support scanning and opening all event devices for input
........

svn path=/trunk/netsurf/; revision=5423
2008-09-23 14:00:40 +00:00
Michael Drake
bbd40534c6 Treat image/jpg as JPEG content for Royal Mail captcha.
svn path=/trunk/netsurf/; revision=5343
2008-09-16 08:13:35 +00:00
John Mark Bell
c446540109 Fix build if NETSURF_USE_PNG := yes and NETSURF_USE_MNG := no
svn path=/trunk/netsurf/; revision=5332
2008-09-15 20:54:03 +00:00
Daniel Silverstone
d3270ed648 Add libpng support. Default to off.
svn path=/trunk/netsurf/; revision=5330
2008-09-15 20:23:02 +00:00
Daniel Silverstone
ac427e05e5 Add additional debug to fetch errors from cURL
svn path=/trunk/netsurf/; revision=5174
2008-08-22 11:10:33 +00:00
John Tytgat
611b558d0e Constify content_type_name & content_status_name
svn path=/trunk/netsurf/; revision=4815
2008-07-30 00:54:43 +00:00
François Revel
f28f4cc760 First round of C89 fixes. Those should be obvious, hope I didn't introduce any side effect.
svn path=/trunk/netsurf/; revision=4788
2008-07-29 09:05:36 +00:00
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
Michael Drake
d2c3d22f52 Change ArtWorks file MIME type to "image/x-artworks".
svn path=/trunk/netsurf/; revision=3449
2007-07-21 00:20:04 +00:00
John Mark Bell
04fb714f8e Add SVG content name to content_type_name array.
svn path=/trunk/netsurf/; revision=3448
2007-07-21 00:14:15 +00:00
Rob Kendrick
1522bfeed6 Add incremental parsing of SVG data to librsvg content handler.
svn path=/trunk/netsurf/; revision=3441
2007-07-19 13:47:59 +00:00
Rob Kendrick
04292695be Initial work on RSVG image handler. Still a lot to do.
svn path=/trunk/netsurf/; revision=3433
2007-07-18 17:58:35 +00:00
Rob Kendrick
59f358eb0f Wrap internal SVG renderer with appropriate #ifdef WITH_NS_SVG
svn path=/trunk/netsurf/; revision=3432
2007-07-18 14:49:26 +00:00
James Bursa
afc9517fbd Add CONTENT_SVG to content handling.
svn path=/trunk/netsurf/; revision=3406
2007-07-13 03:54:47 +00:00
John Mark Bell
17ab65e69a Fix uninitialised fetch structure entries.
This was causing the Referer header to be sent regardless (assuming the referer string was non-NULL).

svn path=/trunk/netsurf/; revision=3387
2007-07-08 11:35:53 +00:00
James Bursa
594eb74c4c Fix deadlock when fetching stylesheets when max_fetchers_per_host is reached by splitting fetch_can_be_freed() into fetch_remove_from_queues() and fetch_free().
svn path=/trunk/netsurf/; revision=3380
2007-07-04 18:44:13 +00:00
James Bursa
960c11de1a Rename register_curl_fetchers() to fetch_curl_register(). Add declarations for static functions and reorder functions.
svn path=/trunk/netsurf/; revision=3379
2007-07-04 18:05:16 +00:00
Daniel Silverstone
e2d0019119 Add option_suppress_curl_debug and default it to true
svn path=/trunk/netsurf/; revision=3373
2007-06-27 16:27:52 +00:00
Daniel Silverstone
82c4458689 Only pass option_ca_bundle and option_ca_path to cURL if they are non-empty.
svn path=/trunk/netsurf/; revision=3372
2007-06-27 16:13:54 +00:00
Daniel Silverstone
e91cfc8e47 Add ca_path option which sets CURLOPT_CAPATH.
svn path=/trunk/netsurf/; revision=3369
2007-06-27 15:39:56 +00:00
Daniel Silverstone
18edcf5a40 Move the p->parent check in urldb to before the cookie loop. Prevents the cookie stuff exploding on domain cookies with no path. Fixes breakage with visiting launchpad.net
svn path=/trunk/netsurf/; revision=3368
2007-06-27 15:35:30 +00:00
John Mark Bell
92fd7ff871 Fix cookie domain matching in unverifiable transactions.
Minor tidying.

svn path=/trunk/netsurf/; revision=3337
2007-06-10 19:59:29 +00:00
Daniel Silverstone
e671fe3707 Add debug about ring sizes. Ensure we dispatch queued jobs when a job is freed.
svn path=/trunk/netsurf/; revision=3333
2007-06-10 18:12:30 +00:00
John Mark Bell
87ca206e13 Warning fixes.
svn path=/trunk/netsurf/; revision=3332
2007-06-10 18:08:22 +00:00
Daniel Silverstone
e6d754cc96 Remove a time consuming LOG(()) and add some whitespace to help me think
svn path=/trunk/netsurf/; revision=3331
2007-06-10 17:55:07 +00:00
Daniel Silverstone
1dd7e97eb3 Merge scheme switcher branch in.
svn path=/trunk/netsurf/; revision=3330
2007-06-10 17:46:44 +00:00
Daniel Silverstone
6807b4208a Remove the netsurf/ from the include paths and rationalise use of <> vs "" in includes
NetSurf includes are now done with ""s and other system includes with <>s as C intended.
The scandeps tool has been updated to only look for ""ed includes, and to verify that the
files exist in the tree before adding them to the dependency lines. The depend rule has
therefore been augmented to make sure the autogenerated files are built before it is run.

This is untested under self-hosted RISC OS builds. All else tested and works.


svn path=/trunk/netsurf/; revision=3307
2007-05-30 22:39:54 +00:00
Daniel Silverstone
25e22eb1f5 Add a -v option to enable debug logging. Pass -v by default to the RO runimage.
svn path=/trunk/netsurf/; revision=3306
2007-05-30 22:27:58 +00:00
James Bursa
5d2a2c42b2 Log curl_version() in fetch_init().
svn path=/trunk/netsurf/; revision=3267
2007-05-06 05:55:13 +00:00
James Bursa
d0db5ed413 Fix warning: field precision should have type 'int', but argument 4 has type 'long int'.
svn path=/trunk/netsurf/; revision=3262
2007-05-02 03:06:52 +00:00
James Bursa
21407fe8ab Fix some warnings in recent gcc.
svn path=/trunk/netsurf/; revision=3261
2007-05-02 02:47:39 +00:00
James Bursa
0547422534 Move user-agent generation into fetch.c and simplify.
svn path=/trunk/netsurf/; revision=3260
2007-05-02 02:38:38 +00:00
John Mark Bell
b229c41e9c 1) Fix corruption of history data structure on cloning
2) Only destroy urldb's thumbnail bitmap if it's not the same as the new 
   one. This needs revisiting at a later date such that the mess 
   surrounding who owns bitmap objects is sorted (and so that urldb 
   doesn't need to know about bitmaps)

svn path=/trunk/netsurf/; revision=3243
2007-04-07 20:30:39 +00:00
John Mark Bell
f059818d74 Squash memory leak
svn path=/trunk/netsurf/; revision=3235
2007-04-05 12:33:12 +00:00
John Mark Bell
ccfc0e7516 Fix abort on attempted destruction of CONTENT_DIRECTORY (1690222)
svn path=/trunk/netsurf/; revision=3228
2007-03-28 22:56:54 +00:00
John Mark Bell
91cfb11592 Fix crash on WWW-Authenticate header with no realm (1686714)
svn path=/trunk/netsurf/; revision=3216
2007-03-23 22:39:10 +00:00
John Mark Bell
f261e4426a Lose noisy logging
svn path=/trunk/netsurf/; revision=3213
2007-03-18 23:48:12 +00:00
John Mark Bell
947ab0dcd2 Ensure content structures are zero initialised.
Make css_destroy check that the stylesheet pointer exists (content 
destructors may be called whilst the content is still loading - e.g. if 
the content type isn't permissable in the context it was loaded from).
Fixes 1627413, 1580980.

svn path=/trunk/netsurf/; revision=3212
2007-03-18 20:19:13 +00:00
John Mark Bell
0d750eac73 Improve debug output so that content usage may be traced
svn path=/trunk/netsurf/; revision=3210
2007-03-18 17:04:18 +00:00
John Mark Bell
6d0795b923 Handle redirects with partial bodies.
svn path=/trunk/netsurf/; revision=3209
2007-03-18 13:02:07 +00:00
John Mark Bell
9cf5122797 Content handlers should not call warn_user - they should broadcast the
error using content_broadcast and leave it to the content owner(s) to 
decide what to do about it.

Only use warn_user for top-level contents.


svn path=/trunk/netsurf/; revision=3204
2007-03-11 22:08:57 +00:00
Richard Wilson
7368688642 Dynamically update scale view (implement 1556975) and prevent double redraws.
svn path=/trunk/netsurf/; revision=3191
2007-03-03 19:46:20 +00:00
John Mark Bell
cf17b38065 Ensure handle options are reset appropriately (fixes 1668354)
svn path=/trunk/netsurf/; revision=3189
2007-02-25 16:52:53 +00:00
Daniel Silverstone
657e384a84 Fix RING_FINDBYHOST to actually find things. jmb found the bug, I verified his patch and committed it
svn path=/trunk/netsurf/; revision=3186
2007-02-22 11:48:39 +00:00
John Mark Bell
25213dca24 Fix handling of cookies in unverifiable transactions caused by a redirect from a fetch into a browser window which was varifiable.
svn path=/trunk/netsurf/; revision=3165
2007-02-02 23:08:13 +00:00
John Mark Bell
8cf2e40daa Bring handling of submission of blank file inputs in line with other browsers.
Tidy up fetch_post_convert while I'm at it.

svn path=/trunk/netsurf/; revision=3159
2007-01-30 23:19:21 +00:00
Rob Kendrick
5426a708a9 Generates and use a User-Agent: string based on new netsurf_version_major/minor values, and results of uname().
svn path=/trunk/netsurf/; revision=3158
2007-01-30 19:51:54 +00:00
Rob Kendrick
7c88381a59 Make time taken that is displayed in status bar use gettimeofday()-based time rather than clock()-based time
svn path=/trunk/netsurf/; revision=3157
2007-01-30 15:32:31 +00:00
James Bursa
a0b6661eb6 Make GTK build compile on FreeBSD.
svn path=/trunk/netsurf/; revision=3154
2007-01-29 22:27:15 +00:00
John Mark Bell
b76283f3d5 Handle strdup failure
svn path=/trunk/netsurf/; revision=3153
2007-01-28 23:53:20 +00:00
John Mark Bell
9612b35de1 Improve domain matching of referer and host.
Lose comparison of schemes - this was spurious and wrong.
Fixes 1646417.

svn path=/trunk/netsurf/; revision=3152
2007-01-28 16:34:50 +00:00
John Mark Bell
df4dbaf4cf Handle cookies in unverifiable transactions
svn path=/trunk/netsurf/; revision=3151
2007-01-27 20:58:20 +00:00
John Mark Bell
f629a4f00f Revert hack around broken pipe (not caching fetch handles used for SSL
connections).
Ignore SIGPIPE completely as nothing other than OpenSSL is expected to 
generate it.

svn path=/trunk/netsurf/; revision=3145
2007-01-18 01:26:58 +00:00
James Bursa
bda01b3135 Fix parsing error when an empty HTML data is returned. Add HTTP status and other information to status bar.
svn path=/trunk/netsurf/; revision=3140
2007-01-13 00:21:15 +00:00
James Bursa
e76140557d Add fetch_http_code() to retrieve the HTTP status code of a fetch.
svn path=/trunk/netsurf/; revision=3139
2007-01-13 00:19:02 +00:00
Daniel Silverstone
cf0718f649 Update the file comment for fetch.c as requested.
svn path=/trunk/netsurf/; revision=3133
2007-01-02 13:07:28 +00:00
John Mark Bell
98b451ffae Add option to set Accept-Charset header (Stefaan Claes)
svn path=/trunk/netsurf/; revision=3124
2006-12-28 00:42:14 +00:00
John Mark Bell
abcce3dfe7 Fix typo.
Default type -> text/plain

svn path=/trunk/netsurf/; revision=3123
2006-12-28 00:36:37 +00:00
John Mark Bell
5b3f0755f6 Add URLdb destruction functionality
svn path=/trunk/netsurf/; revision=3115
2006-12-08 22:38:46 +00:00
John Mark Bell
016dc5270a Further fixes and tidying to urldb. Also squash some memory leaks.
svn path=/trunk/netsurf/; revision=3104
2006-12-04 02:10:40 +00:00
James Bursa
b6b768f521 Improved tracking of memory usage. c->size is now exclusive of talloc size, and the two are added to find the full size.
svn path=/trunk/netsurf/; revision=3103
2006-12-03 22:34:26 +00:00
Richard Wilson
55ed73bf02 Lose debug.
svn path=/trunk/netsurf/; revision=3088
2006-12-01 21:13:27 +00:00
Richard Wilson
ef65cb38bd Fix 1535120, 1528673
svn path=/trunk/netsurf/; revision=3087
2006-12-01 21:09:49 +00:00
Richard Wilson
c9d76ba242 Fix 1597646
svn path=/trunk/netsurf/; revision=3086
2006-12-01 19:07:28 +00:00
Richard Wilson
9bb9194a7d Fix 1563546, plug possible memory leak.
svn path=/trunk/netsurf/; revision=3085
2006-12-01 18:38:04 +00:00
Michael Drake
ba23e4b693 Update project URL.
svn path=/trunk/netsurf/; revision=3073
2006-11-27 15:35:18 +00:00
James Bursa
65b356ba75 Documentation moved to Docs/01-content
svn path=/trunk/netsurf/; revision=3050
2006-11-11 19:46:51 +00:00
John Mark Bell
fbc0ac49e6 Log hostname on insertion failure.
svn path=/trunk/netsurf/; revision=3000
2006-10-12 14:10:18 +00:00
Chris Williams
f4e4ec00b7 Ignore body data from 401 replies to prevent disruption of auth login handling
svn path=/trunk/netsurf/; revision=2972
2006-10-01 13:17:52 +00:00
John Mark Bell
09d2b99973 Ensure urldb_add_path always has a path.
Extract hostname from url authority returned by url_get_components.

svn path=/trunk/netsurf/; revision=2958
2006-09-17 23:10:42 +00:00
Richard Wilson
1086d53b89 Lower overhead of urldb calls by using url component calls.
svn path=/trunk/netsurf/; revision=2908
2006-09-02 18:51:33 +00:00
Richard Wilson
74fa727509 Experimental new frames code.
svn path=/trunk/netsurf/; revision=2906
2006-09-02 15:52:41 +00:00
John Mark Bell
89f760a3e7 Detect attempted fetches using protocols we can't handle.
Mark content in error in a couple of cases that I'd missed ages ago.

svn path=/trunk/netsurf/; revision=2816
2006-08-06 17:51:23 +00:00
John Mark Bell
ca154b54c0 Fix edge case in cookie search code when handling Path=/foo
svn path=/trunk/netsurf/; revision=2776
2006-07-17 23:19:43 +00:00
Richard Wilson
0309e937e6 Allow the user to delete cookies.
svn path=/trunk/netsurf/; revision=2770
2006-07-16 21:42:37 +00:00
Richard Wilson
9294938976 Extent cookie_update API to allow notification of deleted domains. Fix nodes not being re-calculated.
svn path=/trunk/netsurf/; revision=2765
2006-07-16 16:10:43 +00:00
John Mark Bell
4c564c28bf Display session cookies' expiry correctly
Fix urldb debug build
Fix GTK build's cookie_update API

svn path=/trunk/netsurf/; revision=2752
2006-07-15 11:59:25 +00:00
Richard Wilson
652f594cbb Further url completion fixes
svn path=/trunk/netsurf/; revision=2744
2006-07-13 21:28:07 +00:00
Richard Wilson
1fcceb72f6 Fix url completion
svn path=/trunk/netsurf/; revision=2743
2006-07-13 19:48:45 +00:00
Richard Wilson
a836591435 Add basic cookie viewer, make trees use textarea components for UTF8 editing, trim headers, fix tree redraw issues.
svn path=/trunk/netsurf/; revision=2739
2006-07-13 12:46:02 +00:00
John Mark Bell
5bbd5f259e Don't cache curl handles that were used to fetch https URLs; with any
luck, this should fix broken pipe crashes.

svn path=/trunk/netsurf/; revision=2723
2006-07-09 01:25:06 +00:00
Richard Wilson
badad073ec Generate directory listings (fix 1397934)
svn path=/trunk/netsurf/; revision=2719
2006-07-06 00:07:11 +00:00
John Mark Bell
b7af14b591 Implement component-wise URL comparison
svn path=/trunk/netsurf/; revision=2697
2006-07-02 22:34:04 +00:00
John Mark Bell
bc2d96368f Fix conversion of URLs beginning "file://". Additionally,
file://host/... isn't likely, so assume file://path & convert to 
file:///path

svn path=/trunk/netsurf/; revision=2685
2006-07-01 22:27:10 +00:00
John Mark Bell
28a7ed4989 Relax domain matching to allow host a.com to match .a.com
svn path=/trunk/netsurf/; revision=2684
2006-07-01 21:35:30 +00:00
John Mark Bell
8c3e9b882b Fix crash when url_* fails
svn path=/trunk/netsurf/; revision=2678
2006-06-29 22:04:56 +00:00
John Mark Bell
83ef76adc7 Only accept cookies from cookie-enabled transactions
svn path=/trunk/netsurf/; revision=2668
2006-06-29 00:01:24 +00:00
John Mark Bell
a63221a624 Rewrite cookie parser to be more tolerant of junk input
No longer need urldb_init; remove it.

svn path=/trunk/netsurf/; revision=2643
2006-06-24 15:44:48 +00:00
John Mark Bell
bb91584f7c Strip day names from date strings before parsing; these are too variable
to bother with (and carry no information useful to us)
Make expires avpair handling cater for dates after 2038.

svn path=/trunk/netsurf/; revision=2642
2006-06-24 00:01:55 +00:00
John Mark Bell
5f10c6277a Remove assertion of invalid assumption (fixes #1509118)
svn path=/trunk/netsurf/; revision=2637
2006-06-20 12:05:19 +00:00
John Mark Bell
dcb3caf1eb Make cookie file parser more strict (cookies with spaces in the value
have been seen in the wild).
Fix lookup of cookies for top-level paths (i.e. a path segment of "/")

svn path=/trunk/netsurf/; revision=2636
2006-06-20 11:45:41 +00:00
John Mark Bell
8ac57593b8 Fix handling of broken Expires avpairs
svn path=/trunk/netsurf/; revision=2633
2006-06-19 23:40:27 +00:00
John Mark Bell
4f249f9d0a Merge cookies changes into head - unvalidated transactions and a UI
still need implementing.

svn path=/trunk/netsurf/; revision=2632
2006-06-19 21:49:25 +00:00
John Mark Bell
026ba672ae Fix handling of hosts with no paths attached (fixes #1505891)
svn path=/trunk/netsurf/; revision=2620
2006-06-15 15:06:59 +00:00
John Mark Bell
c1dbdad995 Provide persistent flag for urldb entries.
Make hotlist use this, rather than abusing the last visited date.
This fixes the hotlist being copied to global history issue.

svn path=/trunk/netsurf/; revision=2619
2006-06-14 22:46:12 +00:00
John Mark Bell
217e59aebe Fix off-by-one error in search routines which caused crashes with
(invalid) host names ending in a '.'.

svn path=/trunk/netsurf/; revision=2618
2006-06-14 21:47:23 +00:00
Richard Wilson
a2465c779f Remove RISC OS dependencies from filename code.
svn path=/trunk/netsurf/; revision=2540
2006-04-21 23:49:52 +00:00
James Bursa
312bece1d0 Make static function names consistent.
svn path=/trunk/netsurf/; revision=2537
2006-04-16 10:30:51 +00:00
John Mark Bell
faf76f5f5f Ignore scheme when performing partial match
svn path=/trunk/netsurf/; revision=2535
2006-04-15 18:57:57 +00:00
John Mark Bell
e5912fedd1 Use database's copy of URL for new global history entries
svn path=/trunk/netsurf/; revision=2534
2006-04-15 18:53:20 +00:00
John Mark Bell
037fb6d91d Fix host match functions
svn path=/trunk/netsurf/; revision=2532
2006-04-15 17:48:47 +00:00
John Mark Bell
5873160a8b Fix undersized buffer for reading port number into
Detect no URLs for a host before adding host to database.

svn path=/trunk/netsurf/; revision=2530
2006-04-15 13:59:53 +00:00
John Mark Bell
1b48febd2f Fix issues with authentication storage/lookup in database
svn path=/trunk/netsurf/; revision=2527
2006-04-12 23:23:47 +00:00