about summary refs log tree commit diff stats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* loader: fix some CGI header parsing bugsbptato2025-03-211-1/+6
|
* jsutils: add toJSValueConstArray, toJSValueConstOpenArraybptato2025-03-211-1/+1
|
* pager: remove unnecessary castbptato2025-03-211-1/+1
|
* Update libregexp/libunicode bindingsbptato2025-03-201-2/+2
| | | | Lack of cbool is a pain. I'm sticking with JS_BOOL for now.
* Cast Pid to IntAlex2025-03-151-1/+1
|
* layout: eliminate pointless flex relayoutsbptato2025-03-151-5/+12
|
* layout: implement cross auto margins in flexbptato2025-03-142-21/+46
| | | | | Also removes the computation of underflow on the end margin for blocks; as far as I can tell, this was never used.
* loader, forkserver: launch CGI processes from fork serverbptato2025-03-144-93/+173
| | | | | | | | | | Well, it's not much prettier... but it will be useful for keep-alive. (Hopefully.) Also, loader could now be locked down capsicum/pledge/seccomp, but I'm not sure if there's a point. The biggest potential threat it faces is cross-contamination of handles, and no amount of syscall filtering is going to protect against that.
* forkserver: clean up, do not panic on forkBuffer failurebptato2025-03-142-59/+36
| | | | | | | | | I've removed the SIGINT trap because the fork server is now in a separate process group than the main process anyway. We'll see if this actually works... Also realized we weren't closing the fork server's control stream on fork; now we do.
* forkserver: simplify & improve process cleanupbptato2025-03-134-37/+10
| | | | | | | | | | Instead of trying to track child pids (which is wrong - a child may die at any time for whatever reason, so we could have ended up murdering some random process that took its place...), just setsid on forkserver start and send SIGTERM to the entire process group on termination. Also removed the loader pid from the FileLoader object, as it is no longer useful.
* cascade: also blockify inline-flex/(inline-)?grid itemsbptato2025-03-131-1/+1
|
* twtstr: normalize char constantsbptato2025-03-131-7/+7
|
* dom: fix cache-control whitespace handlingbptato2025-03-121-10/+9
|
* headers: hide table, always specify guardbptato2025-03-1210-87/+101
|
* Re-add JSValueConstbptato2025-03-1221-142/+149
| | | | | | | | | This time, I've also ported over the consistency check to prevent some ownership bugs. Unfortunately, the check is very limited, and it is still possible to double-free or leak JSValues. I think it would be possible to make coverage 100%, but only with ARC...
* Update QuickJS-NG to 0.9.0bptato2025-03-111-1/+1
|
* layout: small cleanupbptato2025-03-111-11/+9
|
* layout: shim grid as flow-rootbptato2025-03-113-6/+20
| | | | | | | | | | Pros: basic display on pages that depend on grid being implemented to display anything at all. Cons: breaks pages that have a fallback layout for UAs that can't do grid. (In practice, such pages must be rare - CSS for layout is painful enough that nobody in their right mind will spend time on implementing a fallback layout for the same DOM.)
* layout: revert marginBottom removalbptato2025-03-082-26/+15
| | | | | | It made cached layout inconsistent with uncached layout. (I'm not sure if this is actually observable; either way, it's a bad idea to rely on this.)
* loader: remove unset from client closebptato2025-03-081-1/+1
| | | | it worked somehow, but it's wrong...
* loader: refactor handle registration, fix a cache bugbptato2025-03-071-74/+63
| | | | | | | | | Previously, the code just called put and unset on handles in situations where it seemed necessary, but this has become unmanageable. Now, put is called as soon as a handle receives its stream, and unset is called whenever said handle (and thereby its stream) is closed. This fixes a bug in loadCGI with an rbtCache body.
* tojs: misc cleanupbptato2025-03-075-22/+49
| | | | | | | * optimize toJS set * change defineProperty wrappers to return an enum If we're going to wrap defineProperty, then let's do it properly.
* layout: fix bottom margin handling for root blocksbptato2025-03-072-30/+34
| | | | | | I've also refactored the code a bit, so it's both easier to understand and more efficient. (In particular, BlockLayoutState no longer has to store marginBottom.)
* promise: fix a refcounting bugbptato2025-03-061-5/+2
| | | | + simplify argv -> seq conversion
* history, cookie: fsync before renamebptato2025-03-063-7/+13
| | | | | In theory, it is possible for rename to succeed before the buffers are flushed, and then we lose data.
* javascript: remove ishtmldda from registerTypebptato2025-03-061-3/+6
| | | | | | | It's simpler and more efficient to handle this in the DOM. (The interface was also confusing/broken in that it only really accepted one htmldda class.)
* pager: flush console after logging resultbptato2025-03-051-0/+1
|
* loader: asyncify inputhandle status responsesbptato2025-03-052-143/+175
| | | | | | I've also removed the rsBeforeStatus error check from iclose. I'm not sure if it's still needed at all, but if it is, then it was implemented in the wrong place.
* dynstream: close extraneous fds receivedbptato2025-03-051-2/+9
|
* xhr: add withCredentials, getAllResponseHeadersbptato2025-03-051-4/+22
| | | | | withCredentials doesn't really do anything yet, but will be needed if we do cors fetch/XHR
* blob: default value for lastModified, misc cleanupbptato2025-03-052-24/+32
| | | | Now only WebFile can have an fd.
* blob: work around crash on nightly compilerbptato2025-03-041-1/+1
| | | | | Apparently it's a bug in the optimizer. TODO: reduce & report it
* dom: implement some interfacesbptato2025-03-041-1/+43
|
* layout: adjust table cell height to fill rowsbptato2025-03-032-9/+13
| | | | | | Achieved by generating an anonymous flow root child for the contents and positioning that. (Not the cell contents directly - that wouldn't work because of inline child boxes.)
* loader: fix crash on iclose if client is deadbptato2025-03-021-3/+6
|
* buffer, dom: fix stylesheet leaksbptato2025-03-022-4/+1
|
* loader: merge status and header packetsbptato2025-03-014-47/+23
| | | | | | | We sent the two packets at the same time anyway. (Status could have been sent earlier in some cases, but there is no point - it's unused until after all headers have been received.)
* Refactor bufreader, bufwriterbptato2025-03-0116-489/+465
| | | | | This adds a runtime check to packet readers to ensure that all fds have been read, and switches to seqs for packet writers.
* dynstream, console: remove DynFileStreambptato2025-02-267-70/+45
| | | | | Conflating buffered streams with non-buffered streams is generally a bad idea.
* dynstream: remove exceptionsbptato2025-02-2621-417/+386
| | | | | | | | | | | | | Now we just pass down the value of n and check errno, plus readDataLoop/writeDataLoop returns a bool indicating whether it failed. For now this seems to work OK, but maybe I'll add a better abstraction in the future. EOFError is still used for handling failed packets; this is brittle, and should be replaced once we have a proper buffering mechanism for them. (That will also let us kill BufStream.) Unrelated: this also fixes a bug in buffer with cacheId.
* loader: do not refcount ctxbptato2025-02-251-96/+94
|
* tempfile: merge into pager/loaderbptato2025-02-253-24/+23
| | | | | | | | and throw out the conflict resolution logic; it doesn't matter much if we override an old cache file, as it should have been cleaned up anyway. I've also replaced dirExists + createDir with a single mkdir at call sites. If it fails, so be it.
* dom: add HTMLTimeElement, fix HTMLDetailsElement#openbptato2025-02-212-0/+10
|
* pager: inherit history flag on reloadbptato2025-02-211-1/+2
|
* pager: add API to set search regexbptato2025-02-201-4/+18
|
* env: shim pushStatebptato2025-02-201-0/+8
| | | | not standard-compliant, but better than nothing
* performance: stub getEntries*bptato2025-02-201-0/+12
|
* color: small cleanupbptato2025-02-201-11/+9
|
* select: do not reverse video on cursorbptato2025-02-201-0/+3
| | | | it looks ugly
* term: use so, se for reverse videobptato2025-02-201-3/+3
|