| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
This is to prevent spinning in a loop waiting for a lock. This hangs
often, though I suspect this should have been fixed in the previous
commit.
|
|
|
|
|
|
|
| |
This may or may not be the cause for the app hanging while waiting for
a lock. Now the operations with locks are never performed over an
async boundary, excluding any shenanigans that can happen when
accidentally leaving a file locked over async boundaries.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
This will allow readers to view private posts intended just for them.
Additionally fixed bugs in patterns due to which webmentions might not
have been sent.
|
| |
|
|
|
|
| |
Because sometimes seeing the problem is better than searching for it.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
It works. Launch it using the "kittybox-database-converter" command.
First argument should be the old database URI, second should be the
new one. It will migrate the DB for you.
If you're doing this on a test machine, you can then migrate the
database to production using `rsync -rl` to preserve symbolic links
created by Kittybox's database backend.
|
|
|
|
|
|
| |
Thanks to @Kloenk I was able to get rid of the unsafety and
tell the compiler how to properly check what I needed for
the StorageError to be declared thread-safe.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Flake lock file changes:
• Updated input 'nixpkgs':
'github:kisik21/nixpkgs/28ab753837babd73e2200fb76a6c40f6cb8aee28' (2021-07-14)
→ 'github:kisik21/nixpkgs/e2b7e226ac2f83039d0f116c3693619a8bd6444c' (2021-11-23)
• Updated input 'rust':
'github:oxalica/rust-overlay/63cff1cea66f1cd76fe5377776e5e597c6635a42' (2021-08-06)
→ 'github:oxalica/rust-overlay/885ef5bf9d2857dff8689292aedb511dfc952862' (2021-11-23)
• Updated input 'rust/flake-utils':
'github:numtide/flake-utils/f7e004a55b120c02ecb6219596820fcd32ca8772' (2021-06-16)
→ 'github:numtide/flake-utils/bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4' (2021-11-15)
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
When an error is found, the site name passed to Storage::get_setting
in the error handler is incorrect. The ASCII serialisation of the
hostname should get used.
|
| |
|
| |
|
|
|
|
|
| |
BufReader was really unneccesary here, since I was batch-reading all
of this in one go.
|
|
|
|
|
|
| |
Now symlink creation works on Windows and creates links relative to
the posts, allowing for seamless migrations of the backing directory
for true portability and no data lock-in.
|
| |
|
|
|
|
|
|
| |
Now the Redis dependencies are optional and only required if you want
to test the backend or actually use it in production. The app displays
a hint if you try to launch with an unsupported backend.
|
|
|
|
|
|
|
|
|
|
|
| |
There was a bug where `File::write()` would not write the entire
buffer, and this condition was left unchecked by the code. All
`File::write()` calls are now replaced with `File::write_all()` which
ensures the whole buffer is written to the backing file.
Additionally added a smoke check for the file updates. It is in no way
comprehensive nor it is able to catch all the possible failures but
it's a good way of testing the functionality without way too much hassle.
|
|
|
|
|
|
|
| |
Currently unavailable for use and only has basic GET and POST operations
implemented. A lot more work is needed to make it truly usable.
Locking is implemented using flock() system call on Linux.
|
| |
|
|
|
|
| |
This reverts commit 1c1d0e504c276ccb3c204aa28750f86610bff248.
|
| |
|
|
|
|
|
|
| |
I need to instrument the mobc library used for the Redis connection
pool, but that can be done later since I am somewhat tired. I don't
remember how much I've worked and I need a break... >.<
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
| |
It was always my intention to license this under AGPLv3, so the project will stay free no matter who hosts it, and no matter where. We should have the freedom to customize our blogs however we want!
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
for future reference: stream operations returning Result satisfy
conditions for the futures::stream::TryStreamExt trait, allowing you to
use `TryStreamExt::try_collect::<T>()` and receive a Result<T>.
|