| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
It has caught some minor bugs.
|
|
|
|
|
| |
SIGTERM will kill us anyway, and then the control stream gets
automatically closed. Fin.
|
|
|
|
| |
Fixes acid3 tests 31, 32
|
|
|
|
|
|
|
|
| |
We often redo sub-layouts in layout, and this makes stacking contexts
very hard to build reliably there.
This fixes a bug where positioned descendants of flex items would
sometimes mysteriously disappear.
|
|
|
|
| |
Allows branching on the scheme without string comparisons.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Turns out we don't actually have a reliable mechanism to detect broken
streams - if a pipe is broken, well, it's broken, but that's about all
we know. It seems UNIX sockets didn't trigger the code path, but pipes
do now, and it was causing issues (reporting some correctly ended
streams as broken).
This is not fixable with the current protocol, so for now, I've just
made onError do the same as onRead at EOF.
|
| |
|
| |
|
|
|
|
| |
I wonder if it would be better to just resume in the buffer.
|
|
|
|
|
|
| |
It's a bit tricky, because "username only" means "try with the username
only" only if no password has been recorded for the username on the
origin.
|
|
|
|
| |
It's OK to store it in headers.
|
|
|
|
|
|
|
|
|
| |
For compatibility with mainstream browsers. e.g. this should allow
log-ins through ajax.
To synchronize the loader's cookie jar with that of the pager, we open
a stream (about:cookie-stream) to pass over serialized cookies when
required.
|
|
|
|
|
| |
I'm not 100% content with this syntax either, but it's a significant
improvement over the previous solution.
|
| |
|
|
|
|
|
| |
This may happen if the buffer crashes while pager is trying to share its
resources.
|
|
|
|
| |
Now it only does HTTP/1.1, with Connection: close.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
| |
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...
|
|
|
|
| |
it worked somehow, but it's wrong...
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
| |
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.)
|
|
|
|
|
| |
This adds a runtime check to packet readers to ensure that all fds have
been read, and switches to seqs for packet writers.
|
|
|
|
|
| |
Conflating buffered streams with non-buffered streams is generally a
bad idea.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
ref. https://todo.sr.ht/~bptato/chawan/43
|
|
|
|
| |
Ugly, but works. I think.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also, eliminate the offset attribute in StackItem by just taking
render.offset from the nearest ancestor as the base.
That leaves us with clipBox, which I'm not yet sure how to get rid of.
Its current implementation is certainly wrong: `position: absolute'
should really use its absolute container's clip box. It is however
correct for `position: relative' in its current form.
(One way would be to cache it inside CSSBox, like we do offset.)
|
|
|
|
| |
Event handler functions can be set twice now.
|
|
|
|
|
| |
Dump mode remains the same, except now it can be controlled in
config.toml as well.
|
| |
|
|
|
|
|
| |
Base InlineBox is a fair bit smaller now, and (most) strings are
cached using RefString.
|
|
|
|
|
| |
This isn't great, but neither was passing around a pointer that pointed
to a single object.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For now, the skeleton remains in layout. Eventually it should be
lazily constructed during the actual layout pass (thereby making layout
"single-pass" (sometimes :p))
The end goal is to do it all in styledNode.children, so that caching can
be as simple as "next box = find next matching cached box ?? make new".
This does mean that the internal structure of cached boxes will always
have to be reconstructed, but I don't see a better way. (I suppose it
still remains possible to optimize out the unnecessary layout pass when
only a repaint is needed (e.g. color change) by modifying computed
values in-place.)
|
| |
|
| |
|
| |
|