Fossil

Timeline
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

50 most recent check-ins that include changes to files matching 'src/*'

2026-06-16
13:22
Ensure that the text in the Title field in the new forum editor is visible in dark-style skins. ... (leaf check-in: 4041c766 user: stephan tags: trunk)
13:18
Only show the 'you will be able to attach files after saving' /forumnew notification in browsers which show NOSCRIPT content, as the JS editor integrates attachments. ... (check-in: 8ada7fa8 user: stephan tags: trunk)
10:16
Rework the attachments and forum with JS-based interfaces and enable attachments for forum posts. No-JS browsers fall back to the older forms. Full details are in the merged-in branch's commit history, wiki page, and in forum post b1960bb7d3200328. ... (check-in: ca906591 user: stephan tags: trunk)
2026-06-15
07:44
Replace read timeout with non-blocking poll, and add TCP_NODELAY

clone and sync often hang or appear to hang on links with highly variable latency, sometimes doing so many retries the transfer rate is infeasibly slow and at others spinning on reads that never complete. Both git and mercurial cope well with the same network doing very similar transfers, seemingly due to their protocol design and implementatin. The fixes here improve the fossil implementation somewhat. Everything here was tested with the fossil HTTP 1.1 patch.

* Set TCP_NODELAY on the client socket

The sync protocol interleaves small control writes with bulk transfer, and with the Nagle algorithm active those small writes are held waiting for ACKs; combined with the peer's delayed ACKs this throttles throughput badly on higher-latency paths. Disabling Nagle can give a 10x throughput improvement. This is what curl and many other HTTP clients do (Git uses curl.)

* No blocking forever on TLS reads and writes

After the TLS handshake the socket is switched to non-blocking mode. ssl_send() and ssl_receive() now wait for readiness with poll() and a timeout, and abandon a connection that has stopped communicating or been reset. The blocking socket remains during the handshake so behaviour is unchanged.

* Retry on EINTR

If a signal interrupts recv()/send() we now re... (leaf check-in: e4180437 user: danshearer tags: client-timeout-fixes)

2026-06-14
22:05
Apply timeouts and retries to network read/write waits to avoid hangs.

A clone or sync over HTTP/HTTPS could block when the peer stopped sending without closing the connection. The client sat in a blocking read on the socket with no timeout. The trick was to fix it without breaking the TLS handshake.

http_socket.c: set SO_RCVTIMEO and SO_SNDTIMEO (30s) on the connection socket. The fd stays in blocking mode so the TLS handshake is unaffected.

http_ssl.c: when reads time out with SO_RCVTIMEO, there is no data and BIO_should_retry() is true. Count consecutive retries without progress in ssl_send()/ssl_receive() and give up after a few. ... (check-in: 8da6e359 user: danshearer tags: client-timeout-fixes)

08:47
Ensure that the legacy /attachadd form redirects back to the page for the attachment's target unless it's told otherwise via ?from=X. ... (closed check-in: dab3d681 user: stephan tags: forum-editor-2026)
06:24
Remove a dead form field. Consolidate two partially-duplicated CSS rules. ... (check-in: 9ea044d9 user: stephan tags: forum-editor-2026)
2026-06-13
16:01
Fix the broken Delete Post page, caused by now-outdated/removed goings-on in this branch. ... (check-in: 01f62594 user: stephan tags: forum-editor-2026)
15:33
Remove the new Stash button from /forumnew, where it is unhelpful. ... (check-in: e9e4c4fa user: stephan tags: forum-editor-2026)
13:48
CSS docs and remove some extraneous empty lines. ... (check-in: 378b3c30 user: stephan tags: forum-editor-2026)
13:21
Only show the forum editor's Stash button when saving of drafts is enabled (it currently always is). ... (check-in: b45242d8 user: stephan tags: forum-editor-2026)
13:18
CSS animation consistency tweaks in the attachment widget and when shifting about-to-edit/reply posts to the left. Remove some dead CSS. ... (check-in: 157f5a4c user: stephan tags: forum-editor-2026)
13:01
Restore the Discard button which was inadvertently displaced in the previous checkin. ... (check-in: a9376455 user: stephan tags: forum-editor-2026)
13:00
Minor internal cleanups. Add some tooltip help. Add a Stash button which closes a forum editor widget but retains any local edits and stays on the page. It cannot be called Close because there's a very different Close button already associated with posts. ... (check-in: 2e788c48 user: stephan tags: forum-editor-2026)
12:35
Remove dead captcha-rendering code from the forum editor. Minor internal cleanups. ... (check-in: 0313a31e user: stephan tags: forum-editor-2026)
10:41
Slight forum editor animation tweaks. Add some arguably superfluous "just in case" error handling. ... (check-in: 77b92673 user: stephan tags: forum-editor-2026)
09:58
http.c: Complete the HTTP 1.1 chunked reply decoder

Fix error conditions and exceptions when Transfer-Encoding chunked, partly from drh's Claude:

* Premature EOF was accepted as a valid EOF. * strtol --> strtoll with checking, to avoid casting errors * Per RFC 7230, match "chunked" at the end of the Transfer-Encoding value rather than a substring, so the word "chunked" appearing isn't acceped as a token * make nPrior unsigned int to match blob_size() to avoid a negative offset on large replies * Report only the chunk bytes actually received, not chunk bytes from the header, so the number is correct if the connection terminates part-way. ... (leaf check-in: 441a35ce user: danshearer tags: http1-1-chunked)

08:41
Fix a null deref which would trigger if the XHR to fetch a forum post fails. ... (check-in: 8da3b3f7 user: stephan tags: forum-editor-2026)
08:37
When opening the forum editor, instead of disabling various controls simply hide them, giving the effect that the editor replaces them. This gives us more screen space. ... (check-in: 86dc0502 user: stephan tags: forum-editor-2026)
07:55
While the forum editor is open, also disable the post's Close, Delete, and Attach buttons because those will change the current page. Presumably nobody wants to close or delete during an edit, and attachment can be done via the editor form. ... (check-in: 778b3972 user: stephan tags: forum-editor-2026)
2026-06-12
15:30
Fix a null deref in pre-Web Locks browsers. (Edit: no, it doesn't. The object the guard is around on is an age-old JS-ism.) ... (closed check-in: 1c932836 user: stephan tags: mistake)
15:22
Bug fixes: /attachadd?legacyArgName=X was (A) having its form pulled out from underneath it by JS and (B) not handling ticket IDs properly. ... (check-in: fd327fd2 user: stephan tags: forum-editor-2026)
14:24
Minor cleanups. Add a 'Post as USERNAME' label to the forum editor, per suggestion in the forum. ... (check-in: 73c5b76d user: stephan tags: forum-editor-2026)
2026-06-11
17:48
Typo fix reported by Dan Shearer. Mention the forum overhaul in the change log. ... (check-in: 4b1962b9 user: stephan tags: forum-editor-2026)
10:55
Doc updates. Fix the (harmless but annoying) warning in the file attachment about the attachment being too large if the attachment-size-limit is not set or is set to 0. ... (check-in: f6785741 user: stephan tags: forum-editor-2026)
09:17
Use a JS-disabling browser plugin to fix the legacy-form fallback in the forum editor, reply, and attachment-adding pages. ... (check-in: 77c3ce12 user: stephan tags: forum-editor-2026)
07:51
Fix moderation approval in the forum broken by recent refactoring. ... (check-in: 88838379 user: stephan tags: forum-editor-2026)
06:31
Do not display Attach button in the forum if the user lacks attach permissions. Problem reported in forum post e0072028f7. ... (check-in: ee59442a user: stephan tags: forum-editor-2026)
2026-06-10
21:26
Update some docs for the current reality. ... (check-in: 91a6d48a user: stephan tags: forum-editor-2026)
20:48
Modify the purging of stale forum post drafts to happen on only one visit per 24 hours instead of a random chance on each visit, and make it async so it does not block the still-initializing page. Fix a 'this' mis-reference in fossil.storage.keys() uncovered by that change. ... (check-in: 0db7eccd user: stephan tags: forum-editor-2026)
20:26
Docs and generic non-functional cleanups. ... (check-in: 9af97ebf user: stephan tags: forum-editor-2026)
19:40
In browsers which support Web Locks, do not allow the Edit or Reply buttons to function if an Edit resp. Reply is open for that same post in another tab. Instead, display an error to the user describing the problem. The Edit/Reply buttons will start working once the locking tab is closed. This lock is per draft, not per tab, so it is legal to edit different posts in different tabs or multiple posts in the same tab. In browsers without Web Locks support, most-recent-edit-wins applies. ... (check-in: e48fe702 user: stephan tags: forum-editor-2026)
17:32
Document the caveat of editing or replying to the same forum post in multiple tabs, as pointed out in forum post 9a6a82c160. ... (check-in: 32539a2c user: stephan tags: forum-editor-2026)
11:08
Minimal client implementation of HTTP version 1.1 with chunked transfer-encoding.

Some egress filters drop all HTTP version 1.0 traffic at the Web Application Firewalls (WAF). WAFs commonly provided by CDN (Content Distribution Networks) such as CloudFlare and AWS to their customers have such controls on them, and there are understandable policy reasons for disallowing 1.0. It is almost exclusively used by old software that is often exploitable (eg ancient versions of curl). Fossil users within virtual machines with such egress filters in place get confusing messages along the lines of "Upgrade required". This is inconvenient for Fossil users, and the quick solution is to seek a git mirror for the Fossil repo if one is available, because git just works.

There is no need to upgrade the Fossil server to support 1.1 to solve the egress problem.

This is (I believe) an RFC compliant minimal implementation and it seems to work, but none of the optional extensions are supported because I don't think Fossil needs them. It does need more careful checking on the supplied chunk length because strtol is insufficient. ... (check-in: 0f8a7d60 user: danshearer tags: http1-1-chunked)

10:24
Add ?nojs URL flag check to the new forum JS, /forumnew, and /forumedit. In JS it supresses plugging-in of the JS and in C it suppresses the new-in-this-branch NOSCRIPT tags so that the legacy forms get rendered. We should probably remove the NOSCRIPT tag altogether and have JS remove that form if it exists, which would allow /forumnew and /forumedit to fall back gracefully, even in JS-aware browsers, without the ?nojs URL flag. ... (check-in: 133387b1 user: stephan tags: forum-editor-2026)
10:00
Increase min-height on the forum editor textareas a tick. ... (check-in: a15427ea user: stephan tags: forum-editor-2026)
09:46
Merge trunk enhancements and fixes into the forum-editor-2026 branch. ... (check-in: 5e71becc user: drh tags: forum-editor-2026)
09:44
Improved error reporting when encountering a malformed delta. ... (check-in: cb5edcab user: drh tags: trunk)
09:02
Harden delta processing against malicious delta inputs. ... (check-in: 60c7b5f4 user: drh tags: trunk)
08:48
Increase the dummy padding after some testing showed it to help when adding multiple attachments to a bottom-most post. ... (check-in: 6bcfdf15 user: stephan tags: forum-editor-2026)
08:38
Remove an unnecessary part of the previous checkin. ... (check-in: d6f86204 user: stephan tags: forum-editor-2026)
08:36
Add some dummy padding to the bottom of the page while a forum editor is open to help reduce jumping-around of the UI when previewing, especially for the bottom-most post in a thread. This is a workaround, not a fix. Fix an order-of-operations bug which caused the Reply button state to get out of sync if the content to preview was empty. ... (check-in: cb1e0213 user: stephan tags: forum-editor-2026)
2026-06-09
22:39
Teach the Edit and Reply buttons in the forum to clearly show when a corresponding local draft edit is available. ... (check-in: 04e87087 user: stephan tags: forum-editor-2026)
21:55
Add pieces which, when loading a forum thread, visibly tag Reply and Edit buttons for posts which have local draft replies/edits, but do not yet enable them. Still to solve is how to update those tags dynamically as drafts are added and removed within the current page context. They're currently useful, but the lack of dynamic updates to them is confusing. ... (check-in: bee75fb8 user: stephan tags: forum-editor-2026)
19:59
Re-enable the forum post status selection in the editor since the previous check-in made it safe to use, in that changing only the status from the editor will no longer create a new copy of an otherwise unedited post. ... (check-in: 0f539c6c user: stephan tags: forum-editor-2026)
19:39
Fix an incorrect argument bug in forumpost_tag() which caused it to re-apply tags even if doing so would reapply the same value. The the test-forumpost-tag command. Minor www/forum.wiki touchups. ... (check-in: ab52bc83 user: stephan tags: forum-editor-2026)
18:32
When submitting edits to a post, do not save a new copy if nothing modified and instead alert the user. Remove the Status tag widget from the editor because an apparent bug is causing that tag to be applied on each save, even if it's not modified, and that needs to be chased down. ... (check-in: 598d45f8 user: stephan tags: forum-editor-2026)
10:27
Slightly animate when the post editor shifts its post to the left or reverts it, so that it's not so jarring. ... (check-in: ef49e3fd user: stephan tags: forum-editor-2026)
08:58
Fix misalignment of the Attacher widget's add-a-row button. ... (check-in: ddb40c53 user: stephan tags: forum-editor-2026)
08:13
Have the forum editor preview use /ajax/preview-text instead of /wikiajax/preview so that it does not require wiki-read permissions to use. Reported in forum post 2026-06-08T20:14:31Z. ... (check-in: 210435c0 user: stephan tags: forum-editor-2026)