[LBBS-12] mod_webmail: client_flush_pending_output infinite loop

DAHLIN-12
oct612x, wct4xxp: Compilation failure on next kernel
PHREAKSCRIPT-20
dsp.c: coin DSP patch breaks faxing
LBBS-13
pty.c: Attempt to lock previously destroyed mutex
ASTERISK-82
app_queue: Allow queue strategy to be manipulated externally
LBBS-98
net_smtp: Fix message processing actions being skipped in some cases
LBBS-86
Deadlock on internal lock mutex
PHREAKNET-46
Polycom IP phones not provisioning
PHREAKNET-54
Fix trunking to Telstar
ASTERISK-122
res_pjsip_device_features: Excessive refcount on endpoint object
DAHTOOL-5
Disabling span auto-assignment implodes kernel
PHREAKSCRIPT-36
app_audichron: Tone not working after announcements
PHREAKNET-6
Verification flags international calls
PHREAKSCRIPT-56
DAHDI Tools: Apply unmerged patches
ASTERISK-124
app_mixmonitor: Allow cancelling in-progress recording/recipients
DAHTOOL-4
dahdi_genconf: Hangs when run initially after span assignment
ASTERISK-93
chan_dahdi: DSP optimizations
LBBS-31
mod_sieve: Major Sieve filtering overhaul and improvements
PHREAKNET-34
Pat Fleet prompts
LBBS-16
io_compress: Occasional memory corruption on shutdown
CAMI-1
Action Originate Returns -1
PHREAKSCRIPT-53
app_george: Cancel in-progress recording if nobody said anything
ASTERISK-139
app_sms: File a gcc 15 bug for false positive vectorization warning
LBBS-96
pty: CR NUL is sometimes split up, leaking to flaky test
ASTERISK-100
chan_dahdi: PRI lock held at module unload
ASTERISK-109
voicemail.conf.sample: Clarify misnamed option behavior
WSSMAIL-3
Message listing missing recipient for some messages
ASTERISK-137
sig_analog: Add alternate dial pulse scheme support
LBBS-65
net_smtp: Allow internal trusted hosts to be exempt from protocol violation checks
ASTERISK-102
app_voicemail: Play RDNIS if present when listening to envelope
DAHLIN-4
Improve manual span assignment process
ASTERISK-81
format_lame: MP3 read and write with LAME library
ASTERISK-59
chan_dahdi: Remove stripmsd
ASTERISK-49
Remove all deprecated stuff
ASTERISK-23
logging: Update log levels
ASTERISK-20
app_meetme: Update or remove removal version
ASTERISK-68
res_pjsip_sca: Segfaults on startup with SCA
ASTERISK-88
chan_dahdi: Add ADSI on-hook download support
ASTERISK-83
res_pjsip_device_features: Add forwarding and DND synchronization
ASTERISK-19
chan_dahdi: Remove sig_analog paths
ASTERISK-77
sig_analog: Add Call Waiting Deluxe support
PHREAKSCRIPT-65
wanpipe: wanpipe modules fail to load
DAHLIN-9
No rule to make target 'vpmadt032_loader/vpmadt032_x86_64.o'
ASTERISK-130
Verify that res_xmpp can compile and be used
LBBS-64
mod_operator: Crash with more than 64 options?
ASTERISK-71
app_if: ElseIf executed even if If is true
PHREAKNET-42
Provisioning fails for lines with certain features
PHREAKNET-40
Recent Change provisioning bug increments device name by 1
LBBS-70
mod_smtp_delivery_external: Use SRS for externally forwarded messages
PHREAKNET-52
Cisco end of CSR signing support
DAHLIN-7
Mega-issue to upstream out-of-tree DAHDI patches
PHREAKSCRIPT-30
MD5/RSA authenticated calls frequently fail
ASTERISK-97
func_groupcount: Add group vars
PHREAKNET-35
TSPS improvements
PHREAKNET-23
Wakeup calls not dialling at scheduled time
ASTERISK-101
func_tonedetect: 2600 Hz detection not working or suboptimal
SLACK-5
Failed to receive reply... when message sent
ASTERISK-131
chan_dahdi: Automatically update time when DST starts/ends
ASTERISK-115
chan_iax2: Some pattern matches ignored if included in incoming context
ASTERISK-112
chan_dahdi: Raw power ring audible on recall ring from IAX2 to DAHDI
LBBS-32
mod_spamassassin: Improve default spam handling
LBBS-6
Add menu system scripting engine
ASTERISK-66
app_sf: ReceiveSF not detecting incoming SF
EVERGREEN-1
Use default identity per folder
ASTERISK-110
chan_iax2: Implement MWI
ASTERISK-75
chan_dahdi: Add Call Hold feature
LBBS-92
Gmail bug causes disconnect after MOVE of certain messages
ASTERISK-80
app_record: Add RECORD_TIME function
INTERLINKED-2
PhreakNet Email for BoD Members
LBBS-97
system.c: Evaluate shell syntax/variables when launching programs
LBBS-95
mod_mailscript: Add ADDFLAG action
LBBS-88
net_imap: IDLE data not being processed in realtime
ASTERISK-134
chan_dahdi: Improve configuration validation
INTERLINKED-20
Closing multiple issues simultaneously doesn't work
PHREAKSCRIPT-39
Add optional flag to not update system first
LBBS-58
net_irc: Make ping interval adjustable
DAHLIN-1
Makefile: remove update target
ASTERISK-63
Upstream certain PhreakScript modules
PHREAKSCRIPT-43
Add spanconfig command
ASTERISK-106
chan_pjsip: Modify From header appropriately for unavailable presentation
PHREAKNET-47
Add automation for bill mailings
ASTERISK-123
app_voicemail: Add ability to disable "thank-you" when ending voicemail
LBBS-71
Limit registrations from same IP within a certain amount of time
ASTERISK-104
Improve dahdi show channels output
ASTERISK-64
chan_dahdi: autoreoriginate doesn't work if caller hung up on
LBBS-66
logger: Add rate limiting of log messages
INTERLINKED-16
Add option to not be notified about user's own issues
LBBS-46
Block malicious mail servers after repeated failures
ASTERISK-52
dsp.c: Add ast_freq_reset
ASTERISK-73
chan_dahdi: Hunt to next trunk in group if busy
ASTERISK-65
sig_analog: Allow simple switch to time out to dialplan
LBBS-11
door_evergreen: Use isonetexec instead of exec
LBBS-7
Fix backspace detection/handling
ASTERISK-37
chan_pjsip: CALLERID(ani2) not working
ASTERISK-36
res_pjsip_logger: Add filtering by username
ASTERISK-58
xml: Add config documentation
LBBS-22
mod_mail_trash: Eliminate bbs_pthread_cancel_kill
ASTERISK-84
Add 'core show variables' command
ASTERISK-74
chan_dahdi: Add AMI event for callwaiting
ASTERISK-8
Optimize boilerplate RSA to MD5 fallback
ASTERISK-32
chan_dahdi: Allow Call Forwarding to be set/get programatically
ASTERISK-27
chan_dahdi: add IS_FXO_SIG macro
ASTERISK-72
chan_dahdi: Move documentation to separate file
SLACK-2
README: Add missing pre-reqs
ASTERISK-55
chan_dahdi: add NUM_ANALOG_SUBS
ASTERISK-42
sig_pri: Add CLI description
ASTERISK-34
app_queue: Allow setting context at runtime
ASTERISK-30
Add ast_channel_tech_name_match function
ASTERISK-29
chan_iax2: Add ${CHANNEL(authmethod)}
ASTERISK-15
chan_dahdi: Allow sending SDMF Caller ID
ASTERISK-98
Add hangup callbacks
ASTERISK-47
res_pjsip_session: Warn if no shared codecs
ASTERISK-18
func_frame_drop: Simplify and improve
PHREAKSCRIPT-49
wanpipe doesn't compile above 6.1 kernel
ASTERISK-86
app_confbridge: Channel can join wrong bridge due to race condition
INTERLINKED-6
PhreakNet Forums
LBBS-74
net_ssh: Sessions persist even when they no longer exist
DAHLIN-10
Allow enabling EMPULSE and EMFLASH simultaneously
LBBS-82
localtime_r deadlock
ASTERISK-135
Mutex errors on FreeBSD
DAHLIN-6
Frame relay broken
LBBS-41
socket.c: SEGV in bbs_node_readline
LBBS-69
net_ssh: SFTP uploads fail with WinSCP
PHREAKSCRIPT-19
app_verify: Double free
PHREAKNET-14
1+ calls do not work for single numbers
LBBS-47
Email enhancements
LBBS-90
mod_smtp_delivery_external: Improve queuing process
PHREAKNET-39
Splice Fred Covington prompts for speaking clock
WSSMAIL-5
Add full attachment support
ASTERISK-129
core: Add ref/unref for ast_moh callbacks
DAHLIN-8
Readd native SF support
PHREAKNET-49
ML model for 3-slot coin detection
PHREAKSCRIPT-45
TDMoIP driver module
PHREAKSCRIPT-44
Finish ADSI applications
PHREAKSCRIPT-41
Create virtual modem application using softmodem
PHREAKNET-41
Allow for more granular billing based on switch ZIP code
PHREAKNET-33
Finish TSPS web console
LBBS-72
mod_webdav: Add WebDAV support
ASTERISK-118
chan_iax2: Improve encryption support
DAHLIN-5
FXO rings off hook when rotary dialing on the line
ASTERISK-105
chan_dahdi: Add CLI command to display line voltages
PHREAKSCRIPT-37
app_softmodem: Support speeds higher than 2400bps
WSSMAIL-13
Improve multi-INBOX navigation
LBBS-56
net_snpp: Add Simple Network Paging Protocol support
LBBS-48
net_irc: Support multi-server networks
EVERGREEN-3
Add NNTP support for newsgroups
LBBS-38
mod_smtp_mailing_lists: Allow dynamic membership
LBBS-36
net_telnet: Improve protocol support
LBBS-35
net_acap: Add ACAP protocol support
WSSMAIL-4
Add PHPMailer support for format=flowed
ASTERISK-7
Improve sound control capabilities
LBBS-30
net_nntp: Complete overhaul/rewrite to use maildirs
ASTERISK-99
pjsip: Add Cisco CUCM patch functionality
LBBS-49
Add functionality expected of a traditional BBS package
LBBS-34
net_xmpp: Add XMPP protocol support
LBBS-33
net_imap: Add/standardize commands to modify or purge keywords
ASTERISK-57
bridging: Make DAHDI, always softmix bridging modules
LBBS-91
readline.c: Crash in memmove
EVERGREEN-2
Navigation breaks when requirefromhelomatch=no in LBBS
DOCS-1
Kickstart the wiki
ASTERISK-79
config.c: Make ast_variable_retrieve return last match
ASTERISK-87
asterisk.c: Prevent creation of duplicate Asterisk processes
PHREAKNET-36
Trunking integration with Phil McCarter
ASTERISK-16
res_pbx_validate: Add commands to warn of dialplan problems
PHREAKSCRIPT-62
res_smdr_whozz: Initialization usually fails in practice
DAHTOOL-3
Compilation warnings on 32-bit (i686)
PHREAKSCRIPT-33
verify.conf: Flag invalid NXXs as illegitimate for NANPA calls
LBBS-61
net_imap: Soft assertion in parse_flags_string
LBBS-63
net_imap, io_compress: Spurious warnings if quota exceeded
LBBS-39
net_smtp: Occasional memory corruption on email delivery
LBBS-37
Restrict outgoing port 25 from containers while allowing other traffic
LBBS-23
net_smtp: DMARC reports not sent due to rejection of localhost
LBBS-20
node.c: Occasional race conditions during node shutdown cause deadlock
LBBS-17
Temporary files not always cleaned up
LBBS-79
Makefile: cp -n is deprecated
PHREAKSCRIPT-35
app_mail: SendMail returns SUCCESS
LBBS-51
General TDD improvements
PHREAKSCRIPT-23
res_phreaknet: Increase cURL timeout
ASTERISK-94
app_chanspy: Fix bad audio with single direction operation
ASTERISK-76
app_dial: Allow MOH until progress received
LBBS-28
mod_discord: Warn users if IRC users are not online
PHREAKSCRIPT-16
app_selective: Missing pause after add/delete/instructions prompt
DAHTOOL-2
dahdi_cfg: Compiler warnings
ASTERISK-43
pbx_builtins: allow Answer to specify the channel
ASTERISK-35
sig_analog: Fix buffer overflow
DAHLIN-11
Use dev_addr_set instead of directly modifying const buffer
PHREAKSCRIPT-58
sig_analog: Allow hearpulsing gain to be adjusted
ASTERISK-128
Rename ast_sip_presence_xml_ functions
ASTERISK-127
func_codecs: view/update codecs
WSSMAIL-15
Allow navigating messages using arrow keys
PHREAKSCRIPT-29
res_phreaknet: Don't try making API requests if not a PhreakNet node
LBBS-59
Add HTTP endpoint for updating IRC presence automatically
WSSMAIL-14
Checkbox range selection doesn't always work reliably
PHREAKSCRIPT-34
app_verify: Check additional headers for STIR/SHAKEN attestation
SLACK-3
examples: Add example program to log everything to a CSV
PHREAKSCRIPT-22
Add framehook to display dialed digits
PHREAKSCRIPT-21
app_looparound: Add LoopAround application
LBBS-45
Use isoexec whenever possible
PHREAKSCRIPT-17
res_phreaknet: iax.conf, et. al. are truncated when there is no disk space left
LBBS-43
mod_discord: Improve handling of in-thread replies
LBBS-40
net_smtp: Add additional loop avoidance mechanisms
LBBS-29
net_irc: Add reminder bot
ASTERISK-69
res_cli_originate: Allow specifying Caller ID on CLI
DAHLIN-3
build: Compiler warnings
LBBS-10
mod_sysop: Allow modifying user info from console
LBBS-8
net_imap: Accounts occasionally fail to load or are reordered
LBBS-5
tests: Add TLS tests
LBBS-4
tests: Add tests that establish remote console connections
ASTERISK-53
formats: add ulaw/alaw WAV support
ASTERISK-51
app_originate: Allow spooling future calls
INTERLINKED-4
InterLinked Issues API
PHREAKNET-7
Subscriber Service Disconnect Request Option
LBBS-89
mod_sysop: Improve history navigation and tab completion
ASTERISK-126
chan_iax2: Add fixed jitterbuffer
INTERLINKED-17
Blog: Issues with tag editing and viewing
INTERLINKED-15
Improve paging API
PHREAKNET-45
Operator system PSPs are outdated
LBBS-52
net_smtp: Add limited support for VRFY and EXPN
PHREAKSCRIPT-25
chan_sccp no longer compiles
WSSMAIL-8
Add NNTP support and IRC integration
PHREAKSCRIPT-18
Add better test coverage for 32-bit systems
WSSMAIL-7
Add ability for zero-trust type authentication
LBBS-27
mod_irc_relay: Allow relaying of away/here status
LBBS-24
build: Pre-reqs don't compile on Fedora
LBBS-9
mod_webmail: Improve MIME parsing to extract HTML/PT components
ASTERISK-56
res_musiconhold: Add recursive files support
PHREAKNET-32
Set up Millennium Manager
PHREAKNET-24
[REQ] TTY Telegrams
ASTERISK-11
chan_dahdi: Add wink guard
PHREAKNET-20
Billing based on individual CLLI zip codes
PHREAKNET-1
Add third-party billing integration
PHREAKNET-10
Enhanced utilization of Feature Group D
ASTERISK-10
Proctor application for DAHDI
PHREAKNET-9
General ARTNVAAXCG0 enhancements
ASTERISK-136
app_voicemail: Voicemails stored but no email sent
PHREAKSCRIPT-50
app_acts: Finish fine tuning and bug fixes
PHREAKSCRIPT-47
make webvmail
INTERLINKED-7
TTY BBS lines (45.5+50) issues
LBBS-93
mod_discord: Reply function on Discord doesn't translate well to IRC
ASTERISK-85
chan_pjsip: Add channel encryption integration
PHREAKSCRIPT-51
Add 32-bit/ARM builds
ASTERISK-89
app_stack: Print proper exit location for PBXless channels
LBBS-80
mod_mimeparse: Occasional segfault when running tests
ASTERISK-125
app_voicemail: Warning when hanging up during playback
ASTERISK-120
app_senddtmf: SendDTMF failure if not answering channel
LBBS-15
smtp: Locking errors, deadlock when queue runs during delivery
PHREAKSCRIPT-24
DAHDI builds in GitHub CI occasionally fail due to IPv6
ASTERISK-67
voicemail.conf.sample: maxsilence/minsecs trigger warning
ASTERISK-50
app_dial: Fix or document r tonezone option
DAHTOOL-1
system.conf: Fix typos
ASTERISK-40
pjsip: document MessageSend AOR limitation

← All Issues || New Issue →

Sort Normal || Priority

Details


At some point after a webmail session has concluded, it is typical to find that this has been spamming the console:

[2024-06-22 08:12:28.038]   DEBUG[65783]: mod_webmail.c:3085 client_flush_pending_output: Flushing output ''
[2024-06-22 08:12:28.038]   DEBUG[65783]: mod_webmail.c:3085 client_flush_pending_output: Flushing output ''

.. ad infinitum.

Backtrace when running:

       dynamic = 0
        fulldynamic = 0
        bytes = 130
        log_stdout = <optimized out>
        need_reset = 0
        skip_logfile = 0
        __func__ = "__bbs_log"
#8  0x00007f58283f1a93 in client_flush_pending_output (client=<optimized out>) at mod_webmail.c:3085
        line = 0x7f582003caf0 ""
        __func__ = "client_flush_pending_output"
        res = <optimized out>
        __func__ = "idle_start"
#9  idle_start (client=0x7f5820007610, ws=<optimized out>) at mod_webmail.c:3118
        res = <optimized out>
        __func__ = "idle_start"
#10 0x00007f582b49d844 in ws_handler (node=node@entry=0x7f57e80d5720, http=http@entry=0x7f57df7f3730, proxied=proxied@entry=1) at net_ws.c:1047

Possibly related, sometimes idle_start can also trigger a crash:

Thread 1 (Thread 0x7fca6dffb6c0 (LWP 103850)):
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
        tid = <optimized out>
        ret = 0
        pd = <optimized out>
        old_mask = {__val = {7142744331360876602}}
        ret = <optimized out>
#1  0x00007fcab5c93e8f in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2  0x00007fcab5c44fb2 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
        ret = <optimized out>
#3  0x00007fcab5c2f472 in __GI_abort () at ./stdlib/abort.c:79
        save_stage = 1
        act = {__sigaction_handler = {sa_handler = 0x20, sa_sigaction = 0x20}, sa_mask = {__val = {4321147497007208943, 12798070773811002880, 11952406549267936580, 7632343802151250176, 14024600428130476874, 16319518678535185408, 6825180314748858317, 7632343802151250176, 140508610266257, 0, 3164090317, 140507405580880, 0, 1, 140508610284947, 0}}, sa_flags = -1244626555, sa_restorer = 0x0}
#4  0x0000558137fc1667 in __bbs_assert_fatal (condition_str=<optimized out>, file=<optimized out>, line=<optimized out>, function=<optimized out>) at backtrace.c:311
#5  0x00007fcab1fffb34 in __bbs_assert (function=0x7fcab200e270 <__func__.46> "idle_start", line=3107, file=0x7fcab200c015 "mod_webmail.c", condition_str=0x7fcab200cf60 "client->imap->imap_selection_info != NULL", condition=<optimized out>) at ../include/bbs.h:440
        res = <optimized out>
        __func__ = "idle_start"
#6  idle_start (client=client@entry=0x7fca94001eb0, ws=0x7fca6dff7cc0) at mod_webmail.c:3107
        res = <optimized out>
        __func__ = "idle_start"
#7  0x00007fcab200a0d5 in on_poll_activity (ws=0x7fca6dff7cc0, data=0x7fca94001eb0) at mod_webmail.c:3281
        client = 0x7fca94001eb0
        idledata = <optimized out>
        res = 0
        __func__ = "on_poll_activity"
#8  0x00007fcab5055844 in ws_handler (node=node@entry=0x7fca840489e0, http=http@entry=0x7fca6dff8730, proxied=proxied@entry=1) at net_ws.c:1047
        cres = <optimized out>
        now = <optimized out>
        elapsed = <optimized out>
        this_poll_start = 1721916373
        elapsed_sec = 17
        numfds = 2
        ws = {client = 0x7fca94001dd0, node = 0x7fca840489e0, http = 0x7fca6dff8730, lock = {mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}, info = {initialized = 1, staticinit = 0, destroyed = 0, owners = 0, lastlocked = 1721916363, lwp = 103850, lineno = 205, filename = "net_ws.c", '\000' <repeats 15 times>}}, data = 0x7fca94001eb0, pollfd = 49, pollms = 1740000, varlist = {first = 0x0, last = 0x0, lock = {lock = {__data = {__readers = 0, __writers = 0, __wrphase_futex = 0, __writers_futex = 0, __pad3 = 0, __pad4 = 0, __cur_writer = 0, __shared = 0, __rwelision = 0 '\000', __pad1 = "\000\000\000\000\000\000", __pad2 = 0, __flags = 0}, __size = '\000' <repeats 55 times>, __align = 0}, intlock = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}, info = {initialized = 1, staticinit = 0, destroyed = 0, owners = 0, lastlocked = 0, lwp = 103850, lineno = 867, filename = "net_ws.c", '\000' <repeats 15 times>}}}, cookievals = {first = 0x0, last = 0x0, lock = {lock = {__data = {__readers = 0, __writers = 0, __wrphase_futex = 0, __writers_futex = 0, __pad3 = 0, __pad4 = 0, __cur_writer = 0, __shared = 0, __rwelision = 0 '\000', __pad1 = "\000\000\000\000\000\000", __pad2 = 0, __flags = 0}, __size = '\000' <repeats 55 times>, __align = 0}, intlock = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}, info = {initialized = 1, staticinit = 0, destroyed = 0, owners = 0, lastlocked = 0, lwp = 103850, lineno = 868, filename = "net_ws.c", '\000' <repeats 15 times>}}}, proxied = 1, sessionchecked = 0, cookieschecked = 0}
        route = 0x55813848b6d0
        client = 0x7fca94001dd0
        res = <optimized out>
        want_ping = 0
        ping_data = '\000' <repeats 14 times>
        pfds = {{fd = 48, events = 1, revents = 0}, {fd = 49, events = 1, revents = 1}}
        lastping = 1721916356
        max_ms = 23000
        pollms = 23000
        app_ms_elapsed = 17000
        __func__ = "ws_handler"
#9  0x00007fcab5055ef6 in ws_direct_handler (node=node@entry=0x7fca840489e0, secure=<optimized out>) at net_ws.c:1167

Comments

9/15/2024 12:12 PM — InterLinked

The assertion appears to be triggered due to losing synchronization with the IMAP server, typically when messages have been expunged, triggering a FETCH 1:* on the IMAP server for a remote mailbox, causing the LIST command to time out in libetpan. Since we weren't checking if it succeeded, we were proceeding and then choking when the end of the LIST response arrived later. On top of that, we were aware that we weren't idling, but attempted to restart idling, which is also wrong. Together, these lead to the assertion above.

An easy way to reproduce this is to add a small artificial delay (e.g. 300 microseconds) in status_size_fetch_all in imap_client_status.c. This will cause the LIST command to timeout on a large mailbox (e.g. almost 30 seconds with a mailbox with 90,000 messages).

9/15/2024 12:41 PM — InterLinked

e.g.

[2024-09-15 12:16:21.560] DEBUG[374053]: imap_client_status.c:259 status_size_fetch_incremental: Messages have been expunged (MESSAGES 90610 -> 90609, UIDNEXT 103048 -> 103049)
[2024-09-15 12:16:21.560] DEBUG[374053]: imap_client_status.c:413 append_size_item: Fetching sizes of all messages in INBOX

9/15/2024 12:45 PM — InterLinked

Autoresolved by code commit on GitHub:

mod_webmail: Properly handle high-latency responses.
https://github.com/InterLinked1/lbbs/commit/e842676637e351f27e06708a6d5471fddedf9aff

You must be logged in to leave a comment.