Amendments on July 13, 2022

sysop: Write new config but don't apply it on the fly

There are things in the idle loop that check for config settings and
we can't assume they were there at startup
jcs made amendment 201 about 1 year ago

serial: Add config setting for port speed

jcs made amendment 202 about 1 year ago

Amendments on July 14, 2022

tcp: Add UDP sending functionality

jcs made amendment 203 about 1 year ago

telnet: When banning an IP, optionally send it via UDP to trusted proxy

If the new trusted_proxy_udp_port config option is set, send a UDP
packet containing the IP to the trusted_proxy_ip host so it can ban
it more aggressively.
jcs made amendment 204 about 1 year ago

Amendments on July 15, 2022

bile: Fix bogus free in bile_sorted_ids_by_type

ids was not being initialized to NULL, so when passed to EXPAND_TO_FIT,
realloc is doing a free of some junk pointer before malloc'ing a new
jcs made amendment 205 about 1 year ago

board: Don't pre-alloc a bunch of ids in board_find_post_ids

If we return early or we return no ids, we shouldn't have a dangling
malloc(sizeof(long) * 16) that the caller might not know to free
since the count returned will be 0.
jcs made amendment 206 about 1 year ago

session: Add a special case in session_flush for the console

jcs made amendment 207 about 1 year ago

chat: Use session_output instead of printf when printing a bar

These can be big and trigger an overflow panic in the printf buffer
jcs made amendment 208 about 1 year ago

Amendments on July 16, 2022

*: Move some big char buffers from the stack to the heap

Use FILENAME_MAX in place of 256 where appropriate.
jcs made amendment 209 about 1 year ago

session+chat: Remove session_bar, implement simpler bar in chat

This is only used in chat and only to print a left-aligned bar.
jcs made amendment 210 about 1 year ago

*: Properly handle running out of sessions

Limit sessions to the number of uthreads we can handle, and then
reserve 1 session for the console.
In telnet, allocate one extra node so we can print a message to the
client that we have no free nodes, and then disconnect. Add a view
for this to make it editable.
In console, handle getting a null session back from session_create.
jcs made amendment 211 about 1 year ago

serial: If session_create fails, hang up

Maybe we should not put the modem in auto-answer and require manual
ATA, but then only do that if we can establish a session first. That
way we don't waste time negotiating the modem just to hang up.
jcs made amendment 212 about 1 year ago

board: Put the message index in the prompt, not the message id

It can be confusing when a user hits '1' to view the message in the
list showing "1 ..." but the prompt ends up showing "Boards:blah:4".
jcs made amendment 213 about 1 year ago

folder: Show filename in the prompt, fix column alignment

jcs made amendment 214 about 1 year ago

Amendments on July 17, 2022

mail: Don't allocate such a huge message body size

jcs made amendment 215 about 1 year ago

telnet: Remove local banning, just use UDP sending to trusted proxy

Since we can't reject connections from banned IPs before opening the
TCP connection and we can get the trusted proxy to block IPs with
UDP messages, just rip local banning out of here.
jcs made amendment 216 about 1 year ago

Amendments on July 19, 2022

bile: Fix unmarshalling of a dynamic field with zero length

Don't xmalloc(0), just set it to a NULL pointer.
jcs made amendment 217 about 1 year ago

*: Add session signoff view, remove session_output_template

All remaining uses of session_output_template can use session_printf
which still does {{B}} and {{/B}} parsing.
Change session_output_view to session_output_view_or_printf to make it
easier to print a view and fallback to a string, rather than having to
check the result of session_output_view everywhere.
jcs made amendment 218 about 1 year ago

Amendments on July 21, 2022

*: Use NewPtr instead of malloc, add malloc and free debugging

Instead of free(ptr), use xfree(&ptr) and after it calls
DisposePtr(ptr), it will update ptr to point at NULL to catch
When MALLOC_DEBUG is defined, each allocation is added to a
list, and removed when freed. If it's not in the list at free
time, it's a double-free. Also, instead of pointing pointers at
NULL, point them to a pre-defined block of zeroes and in the
idle loop, periodically check that this block is still zero. This
will also catch use-after-frees in a more reliable (but costly)
jcs made amendment 220 about 1 year ago