| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
| |
Now we just pass through a socket created in pager.
This removes the need for a socket directory, and strengthens the buffer
sandbox slightly.
I've kept the ServerSocket code, because I want to add some form of RPC
and communication between separate instances in the future. However,
I don't expect this to be handled outside the main process, so I've
removed the Capsicum-specific connectat/bindat code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
safeClose was originally added to prevent this bug:
let fd = doSomething() # allocates fd on 0, e.g. by opening a socket
let ps = newPosixStream(fd)
...
discard dup2(ps.fd, STDIN_FILENO)
ps.sclose() # stdin is now closed, despite the opposite intention.
With safeClose called on fds that could be stdin, the goal was that
stdin/stdout/stderr would never be allocated as a different file,
but it was still error-prone. Enter moveFd:
ps.moveFd(STDIN_FILENO)
If ps is already stdin, this does nothing. If not, it dup2's ps to
stdin, closes ps.fd, and sets it to stdin.
|
|
|
|
| |
we always do 2 passes
|
| |
|
|
|
|
| |
better than nothing
|
| |
|
| |
|
|
|
|
|
| |
Just to replace what QJS-NG has, because I don't want to expose a
nanosecond precision clock.
|
|
|
|
| |
welp. bufreader chokes on 0-sized packets...
|
| |
|
|
|
|
| |
starting to run out of test case names
|
| |
|
|
|
|
|
|
|
| |
This way, you can C-p and edit searches again.
It is somewhat unfortunate that two entries are saved too, but the
alternatives are more complex and not necessarily better.
|
|
|
|
|
| |
contentType is the network type; t may be different depending on the
extension.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, each message (load, resume, passFd, etc.) would open a new
connection to loader's UNIX socket, and assumed the loader was dead
when the loader did not respond (ECONNREFUSED).
As it turns out, this model was hopelessly broken: POSIX does not
specify when a UNIX socket can refuse connections, so while it happened
to work on Linux (which just blocks if it can't accept right now),
FreeBSD would randomly refuse connections whenever its listen queue was
full.
Instead, we now take a socketpair() from the loader in addClient, and
pass on one half to the client (the other half stays in loader); this is
the control stream, and all messages from the specific client are sent
through it. If a message includes a new stream (e.g. lcLoad), then it
sends a new socketpair through the control stream.
Aside from not being completely broken (and being marginally more
efficient), this arrangement has several other benefits: it removes the
need for authentication, almost removes the need for sockdir (now only
buffers use it), and will make it easier to add async message processing
in the future.
|
| |
|
|
|
|
| |
@media (grid: 1) works again.
|
|
|
|
| |
Fixes acid3 test 21
|
|
|
|
|
| |
This must not be handled by the tree builder, as that needlessly
complicates tree caching.
|
|
|
|
| |
also, reduce the number of types named MediaQueryList by 50%
|
|
|
|
| |
Only works if referer-from is enabled.
|
|
|
|
|
|
|
| |
In lite mode, it uses default window attributes.
Incidentally, this also untangles media query matching from cascade,
saving us a forward declaration hack (yay!)
|
|
|
|
| |
undocumented alias for url; just use the latter.
|
|
|
|
|
|
|
| |
In this case, it seems we have to wrap.
(It's still not quite there; replace flow-root with inline-box to see
another interesting bug...)
|
|
|
|
| |
We do not support sticky scrolling, but this much should still work.
|
|
|
|
| |
In some cases, it works without restyle, but not always.
|
|
|
|
|
|
|
| |
handleRead can register through fetch, so this doesn't work out as
nicely as in loader (where we control all register/unregister calls).
So now we queue up register events first, and only process them after
the "events" iterator exits.
|
|
|
|
|
|
|
|
| |
Turns out this doesn't work like I thought it does... the second
layout is always needed.
This probably means that it's possible to layout absolutes during flow
after all...
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
* respect flex item starting margin on main axis
* pass left margin as offset input too -> fixes some sub-layout cache
inconsistencies
well, I *think* it does, but I haven't managed to find a case where it
changes anything... either way, at least the code is prettier now
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
it has to clear old styles too
|
|
|
|
|
|
|
|
|
|
| |
FD_CLOEXEC should hopefully get rid of bugs where buffers outlived the
main process because of some stray child process keeping the canary
pipe alive.
It's not perfect because of the runMailcapWriteFile/runMailcapReadFile
double-forks. Ideally they should be replaced with an implementation
that tracks temporary files in the main process.
|
| |
|
|
|
|
| |
Fixes acid3 test 53
|
| |
|
|
|
|
|
|
| |
style/layout invalidation is a mess :(
Fixes acid3 test00
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
I'm not a fan, because it hides bugs. But working around the overflow
errors is starting to get unwieldy.
On 32-bit systems, we try to use compiler intrinsics as Nim does.
|