Language:
switch to room list switch to menu My folders
Go to page: First ... 8 9 10 11 [12]
[#] Tue Jul 28 2026 14:27:16 EDT from PanaSonic

[Reply] [ReplyQuoted] [Headers] [Print]

 

Mon Jul 27 2026 23:09:23 EDT from IGnatius T Foobar

Just tried to plug in Home Assistant's CalDAV support to Citadel, and discovered that it wants to use the "REPORT" command, which based on what I'm seeing in the current source code, looks like it just dumps an "Error 500". 

Bad news: WebCit does not support CalDAV.  At all.

Any chance this might end up being supported at some point?  

Good news: it's already been completed.  WebCit-NG has full CalDAV and CardDAV support.  It's working with several different clients, including DAVx5 on Android and Thunderbird on desktop.  Even the WebCit-NG user interface itself is using CalDAV and CardDAV on the back end to access its own data stores.

We're aiming for general availability late this year.



ah, cool.  I was under the impression that current support was there, just apparently limited.  

I'm happy to upgrade whenever, I'll take cutting edge/bleeding edge/"not ready for general consumption".  Or run a second instance, whichever.  It's not like resources are hard to come by these days :-)  I've finally got everything up and running and staying that way, so I can put things through their paces.

 



[#] Wed Jul 29 2026 09:37:20 EDT from IGnatius T Foobar

[Reply] [ReplyQuoted] [Headers] [Print]

I'm happy to upgrade whenever, I'll take cutting edge/bleeding
edge/"not ready for general consumption".  Or run a second instance,

If you're willing to build from source, it's all there in the repo. If you run it on the same host as your main system you can just go to webcit-ng/ and do "make" and run it right from the build directory. Use the -h command to point it towards your already running Citadel Server.

I guarantee you're going to like what you see, or my name isn't Adam Osborne.
:)

[#] Wed Jul 29 2026 11:00:19 EDT from luisgo

Subject: Re: Problem with purge.

[Reply] [ReplyQuoted] [Headers] [Print]

wget -q -O - https://easyinstall.citadel.org/install | BACKEND=lmdb bash

I tried the command above without success.

Also I had to abort the instalation because it did not accept any WebCit port. 

Mon Jul 27 2026 18:05:40 EDT from IGnatius T Foobar Subject: Re: Problem with purge.
Easy Install has been updated to make LMDB available. It should work now.
Be sure to back everything up because this is destructive.

 



[#] Thu Jul 30 2026 14:48:19 EDT from awrdgrs

Subject: Connections hanging from server side rules

[Reply] [ReplyQuoted] [Headers] [Print]

Hello,

I installed the following on my Fedora 43 server.

Running: Citadel Server 17846585 with WebCit 17846585
Server Build: 17846585


The DKIM addition worked great.  Thanks!


I did however find an issue that I'm hoping can be corrected.  Here is what is happening:


I like to separate my spam from my good email so my phone doesn't get overloaded.  In the old version I had a rule that looked for the Spam-Status flag and if it was 'Yes' it would forward the email to a spam account and then delete the message.  This way the email went to the spam account and cleared up the main account.  It also allowed me to go back to that spam account in case email went there by accident.


Here is the problem.  When the process is forwarding the message it is running into a lock issue and can't continue.  It leaves the message hanging and it never times out.  Eventually the ports fill up (even with the threads set to 1024) and the server eventually stops taking calls.


Here is part of a conversation with Gemini that was achieved by running a debugger and tracing the futex to the memory location.


Root Cause Identified: Self-Deadlock in Thread 186

The backtrace identifies Thread 186 (LWP 10186) as the root cause of the entire thread cascade freeze.

The process is suffering from a self-deadlock caused by non-recursive mutex re-entrancy in Citadel's inboxrules module.

The Execution Chain (Thread 186)

  1. Housekeeping runs: Thread 186 initiated periodic background processing (do_housekeeping -> perform_inbox_processing).

  2. Lock acquired: perform_inbox_processing() locked Critical Section 22 (S_INBOXRULES).

  3. Redirect triggered: While iterating through user messages (for_each_message -> inbox_do_msg), it hit an inbox rule configured to redirect an email (inbox_do_redirect).

  4. Message re-submission: inbox_do_redirect() called CtdlSubmitMsg() to resend/route the message into the destination room.

  5. Room hook fired: CtdlSubmitMsg() called PerformRoomHooks() to notify modules that a new message was saved.

  6. Re-entrant lock attempt: PerformRoomHooks() invoked serv_inboxrules_roomhook(), which unconditionally attempted to acquire begin_critical_section(22) again.

  7. Self-Deadlock: Because Citadel’s begin_critical_section() mutexes are standard non-recursive pthread_mutex_t locks, Thread 186 blocked waiting for itself to release critical section 22.

Why All SMTP Worker Threads Stalled

Because Thread 186 froze while holding Critical Section 22:

  • Every incoming SMTP connection (Threads 189, 188, 187, 185, 184, 183, 182, 181, 180, etc.) tried to deliver inbound mail via CtdlSubmitMsg().

  • Delivery triggers room hooks (PerformRoomHooks()), which calls serv_inboxrules_roomhook().

  • serv_inboxrules_roomhook() requested begin_critical_section(22) and immediately blocked waiting on Thread 186.

  • As remote mailers kept attempting delivery, new worker threads spawned, hit the exact same lock, and stacked up until thread limits and socket file descriptors in CLOSE_WAIT were exhausted.

Remediation Options

1. Immediate Workaround (No Recompile)

If an active account has an Inbox Rule configured to Redirect or Forward messages, removing or disabling that specific rule will prevent inbox_do_redirect() from firing during background housekeeping.

2. Code Fixes (C Source Level)

  • Option A (Unlock before submission): In server/modules/inboxrules/serv_inboxrules.c, release critical section 22 prior to calling inbox_do_redirect() / CtdlSubmitMsg(), then re-acquire it afterward if still iterating.

  • Option B (Re-entrancy Guard): Check if the current thread already holds S_INBOXRULES (or pass a flag/session context) inside serv_inboxrules_roomhook() before attempting begin_critical_section(22).

  • Option C (Recursive Mutex): Initialize the mutex for Critical Section 22 with PTHREAD_MUTEX_RECURSIVE in server/threads.c so the same thread can safely re-acquire it without deadlocking.

 

I have removed the server side rules and the email server is working properly.  If you would like to duplicate the issue here is what the rules look like:





Thanks in advance for any help on this.




Go to page: First ... 8 9 10 11 [12]