Art Cancro [Wed, 5 May 2010 16:14:01 +0000 (16:14 +0000)]
* XMPP login hooks which output protocol data should only activate if this is actually an XMPP session. Ouch.
Art Cancro [Wed, 5 May 2010 16:02:06 +0000 (16:02 +0000)]
* check for null
Wilfried Göesgens [Tue, 4 May 2010 20:32:49 +0000 (20:32 +0000)]
* StrBufReadBLOBBuffered(): fix abort condition; if it doesn't end by itself, stop after 100000 tries; if we select 1000 tries should do it.
Art Cancro [Mon, 3 May 2010 21:19:15 +0000 (21:19 +0000)]
* New utility function xmpp_is_visible(), used to determine whether any given session in the wholist is visible to the current user and capable of receiving instant messages. This eliminates duplicate code in three different places.
* The XMPP mortuary is functionally complete and does appear to be working properly. Upon connecting, an XMPP client now receives 'buddy delete' messages for any buddy he has ever seen, minus the ones who are online right now. This should effectively eliminate the accumulation of 'ghost' buddies on large public access systems like Uncensored.
Art Cancro [Mon, 3 May 2010 21:18:37 +0000 (21:18 +0000)]
* New utility function xmpp_is_visible(), used to determine whether any given session in the wholist is visible to the current user and capable of receiving instant messages. This eliminates duplicate code in three different places.
* The XMPP mortuary is functionally complete and does appear to be working properly. Upon connecting, an XMPP client now receives 'buddy delete' messages for any buddy he has ever seen, minus the ones who are online right now. This should effectively eliminate the accumulation of 'ghost' buddies on large public access systems like Uncensored.
Wilfried Göesgens [Mon, 3 May 2010 21:16:31 +0000 (21:16 +0000)]
* rather have one typedef than dozends of structs all over the source
Art Cancro [Mon, 3 May 2010 20:09:50 +0000 (20:09 +0000)]
* Lots of changes to the XMPP Mortuary to make it keep track of useful data. We're one more update away from this being something that works.
Art Cancro [Mon, 3 May 2010 16:41:45 +0000 (16:41 +0000)]
* Eliminate generic_free_handler() since it is not needed
Art Cancro [Mon, 3 May 2010 15:31:33 +0000 (15:31 +0000)]
* cosmetic changes
Art Cancro [Mon, 3 May 2010 04:24:29 +0000 (04:24 +0000)]
* Tried to complete the dead buddy thing in xmpp, but the code I already wrote now seems to be broken?
Wilfried Göesgens [Thu, 29 Apr 2010 22:32:32 +0000 (22:32 +0000)]
* Make memreadlinelen() const
Wilfried Göesgens [Thu, 29 Apr 2010 22:12:06 +0000 (22:12 +0000)]
xmpp_fetch_mortuary_backend(): copy the string over so we can use it later and free it. else we will free a non-malloced pointer or loose that buffer before we want to use it.
Btw, theres no need for specifying generic_free_handler, thats default.
Wilfried Göesgens [Thu, 29 Apr 2010 21:15:41 +0000 (21:15 +0000)]
* free the wildfire buffer on session detaching
Wilfried Göesgens [Thu, 29 Apr 2010 21:07:21 +0000 (21:07 +0000)]
* require DEF:VAL and DEF:STR to have one token, as it should.
Wilfried Göesgens [Thu, 29 Apr 2010 21:02:11 +0000 (21:02 +0000)]
* ups, its FreeStrBuf(&ptr)
Wilfried Göesgens [Thu, 29 Apr 2010 20:57:19 +0000 (20:57 +0000)]
* fix wildfire exception handling; collect stuff in a buffer, and serialize it to the header when done.
Wilfried Göesgens [Thu, 29 Apr 2010 18:49:10 +0000 (18:49 +0000)]
* xmpp_xml_end(): output what we don't understand in the error message.
Art Cancro [Wed, 28 Apr 2010 17:03:55 +0000 (17:03 +0000)]
* Reenabled the XMPP mortuary. If there's still a bug in this I need to find it.
Art Cancro [Wed, 28 Apr 2010 16:01:22 +0000 (16:01 +0000)]
* A little more padding between the chat windows
Art Cancro [Wed, 28 Apr 2010 15:52:26 +0000 (15:52 +0000)]
* Added a background color to the roomchat send box
* fixed some indentation and spacing in webcit.css
Art Cancro [Tue, 27 Apr 2010 16:23:06 +0000 (16:23 +0000)]
* upgrade prototype to 1.6.1
* upgrade scriptaculous to 1.8.3
Art Cancro [Tue, 27 Apr 2010 16:20:19 +0000 (16:20 +0000)]
* When the user navigates away from the roomchat screen for any reason, advise the server of this condition using an 'RCHT exit' command.
Wilfried Göesgens [Mon, 26 Apr 2010 23:05:50 +0000 (23:05 +0000)]
* StrBufTCP_read_buffered_line_fast(): silence warning of narrow minded compilers
Wilfried Göesgens [Mon, 26 Apr 2010 22:22:37 +0000 (22:22 +0000)]
* output_html(): it needs to be isspace()src="cid: not <blank>src="cid:
Wilfried Göesgens [Mon, 26 Apr 2010 21:32:31 +0000 (21:32 +0000)]
* cmd_spex() accept old (deprecated) version of policy too
* cmd_gpex() accept old (deprecated) version of policy too
Art Cancro [Mon, 26 Apr 2010 18:48:24 +0000 (18:48 +0000)]
* More tweaks to the room chat window. Now displays the list of users in chat.
Art Cancro [Mon, 26 Apr 2010 16:20:53 +0000 (16:20 +0000)]
* Executive decision. From now on, intr (ctrl-c) begins an attempt at a graceful shutdown, but quit (ctrl-backslash) forcibly quits the server. Signal handler for SIGQUIT has been disabled.
Art Cancro [Sun, 25 Apr 2010 05:11:29 +0000 (05:11 +0000)]
* Added some style to the roomchat window.
Wilfried Göesgens [Sat, 24 Apr 2010 13:31:29 +0000 (13:31 +0000)]
* add Remove button
* post_message(): use IKEY and Flathash, we just use numbers anyway.
* post_message(): add handler for removal of attachments; it seems as if 'filename' comes out URL-encoded, so we need to decode it.
We need to iterate and strcmp() so we find the right one :(
* post_message(): when adding a new item just using count+1 isn't sufficient anymore; we need to use the key value + 1 of the last item in the list instead
Wilfried Göesgens [Sat, 24 Apr 2010 12:49:16 +0000 (12:49 +0000)]
* DeleteEntryFromHash(): don't skip indirection via the lookuptable, else we free some random payload
* DeleteEntryFromHash(): NULL the end of the list; This is the entry we just removed.
* hashlist_test: add some tests with removing items from the list
Wilfried Göesgens [Sat, 24 Apr 2010 11:41:33 +0000 (11:41 +0000)]
* offer a split version of GetNextHashPos(): GetHashPos() retrieves the item, NextHashPos() moves the iterator forward.
Wilfried Göesgens [Sat, 24 Apr 2010 10:20:42 +0000 (10:20 +0000)]
* post_mime_to_server(): next try for the lz3 case: try to block posting empty messages anyway.
Wilfried Göesgens [Sat, 24 Apr 2010 09:33:15 +0000 (09:33 +0000)]
* move policy.c into modules/expire/expire_policy.c, since it just controls this.
* remove all unneded includes to policy.h
* remove hardcoded reference to policy from mk_module_init.sh (hard to find...)
Art Cancro [Sat, 24 Apr 2010 05:04:20 +0000 (05:04 +0000)]
* Finally got room chat working properly. Just need to add the bells and whistles.
Wilfried Göesgens [Thu, 22 Apr 2010 19:56:41 +0000 (19:56 +0000)]
* call json_roomflr with sort parameters
Wilfried Göesgens [Wed, 21 Apr 2010 22:42:11 +0000 (22:42 +0000)]
* ParseMessageListHeaders_Detail(): don't use the tokenizer to read the subject; this works around pipes in mail subjects
Wilfried Göesgens [Wed, 21 Apr 2010 22:08:16 +0000 (22:08 +0000)]
* headers_euid() ooops, 'T' is a string!
Wilfried Göesgens [Wed, 21 Apr 2010 22:00:59 +0000 (22:00 +0000)]
* cmd_oidf(): if we don't have ha Server to authenticate against, bail with ILLEGAL_VALUE
Wilfried Göesgens [Wed, 21 Apr 2010 19:52:03 +0000 (19:52 +0000)]
* fix flags for state of rest parsing
* DAV-Message-list: expect timestamp next to the EUID
Wilfried Göesgens [Wed, 21 Apr 2010 19:20:31 +0000 (19:20 +0000)]
* headers_euid(): print out timestamp of message too, DAV needs this.
* CtdlOutputPreLoadedMsg(): initialize pointer to silence value
Art Cancro [Mon, 19 Apr 2010 15:39:22 +0000 (15:39 +0000)]
-
Art Cancro [Mon, 19 Apr 2010 14:56:57 +0000 (14:56 +0000)]
* update room chat to the new protocol. This needs a couple more tweaks but I'm checking it in to avoid conflicts with other commits
Wilfried Göesgens [Mon, 19 Apr 2010 10:20:54 +0000 (10:20 +0000)]
* add one more callback hook to the webcit DAV handler structure; this will be used to revalidate URLs, move or delete certain items referenced by URLs
* add handler vor EUID based namespaces; so far we just have the exists logic; this will be filled with the other required operations soon.
* finish REST URL parsing with 'best-guess'-room logic
Wilfried Göesgens [Mon, 19 Apr 2010 10:07:49 +0000 (10:07 +0000)]
* CompareRoomListByFloorRoomPrivFirst() add a wrapper that can be called with types for webcit internal use...
Wilfried Göesgens [Mon, 19 Apr 2010 10:05:25 +0000 (10:05 +0000)]
* add the IO-Debug statement to the comment howto build .debs with devel support
Wilfried Göesgens [Mon, 19 Apr 2010 10:01:57 +0000 (10:01 +0000)]
* client_read_to(): print a bactrace when the client socket goes away on read
Wilfried Göesgens [Mon, 19 Apr 2010 09:59:56 +0000 (09:59 +0000)]
* fix umlaut
Art Cancro [Sat, 10 Apr 2010 19:12:22 +0000 (19:12 +0000)]
* oops ... fix a syntax error
Wilfried Göesgens [Sat, 10 Apr 2010 12:31:44 +0000 (12:31 +0000)]
* according to https://support.mozilla.com/en-US/forum/1/479557 it pushes the limit by 5MB, but its still just 19 of 30 which it sends :(
Wilfried Göesgens [Sat, 10 Apr 2010 10:07:57 +0000 (10:07 +0000)]
* ReadPostData(): abort if we fail to read the whole content
* session_loop(): allocate buffers after reading post data, so we don't have to free them on error
* session_loop(): abort if reading post data fails
Wilfried Göesgens [Sat, 10 Apr 2010 09:01:25 +0000 (09:01 +0000)]
* mime_parser(), mime_decode(), the_mime_parser(); use typedef for callback functions, signature gets compacter that way
Wilfried Göesgens [Thu, 8 Apr 2010 21:04:13 +0000 (21:04 +0000)]
* change_start_page(), LoadStartpage(): check whether the startpage is allowed by rule
* InitModule_MSG() disallow postpart_download, postpart, confirm_move_msg, delete_msg, move_msg, post to become the startpage; they don't do usefull things there.
Art Cancro [Thu, 8 Apr 2010 04:33:45 +0000 (04:33 +0000)]
* Moved instant messaging into its own module -- serv_instmsg
* Removed serv_chat and the CHAT command
* Implemented serv_roomchat and the RCHT command, which implements a brand new chat protocol
Wilfried Göesgens [Tue, 6 Apr 2010 22:05:15 +0000 (22:05 +0000)]
* GetRESTFolder(): find the parts of the URL matching our rooms; since there may be uids/messageids/mimeparts keep a 'best guess' we return if theres no direct match
* GetRESTFolder(): collect sub-rooms of the current URL so we can list them later
Art Cancro [Tue, 6 Apr 2010 16:41:22 +0000 (16:41 +0000)]
* Minor tweaks to ldap.c -- logging, remove commented-out code etc.
Wilfried Göesgens [Tue, 30 Mar 2010 18:50:27 +0000 (18:50 +0000)]
* say we're UTF-8 in vacation messages.
Art Cancro [Sun, 28 Mar 2010 17:25:08 +0000 (17:25 +0000)]
* Disabled CHAT cmd until the underlying I/O layer is fixed
Wilfried Göesgens [Sat, 27 Mar 2010 16:53:41 +0000 (16:53 +0000)]
* CtdlOutputPreLoadedMsg(): chop it into handy pieces; No functional change.
Art Cancro [Sat, 27 Mar 2010 15:22:18 +0000 (15:22 +0000)]
* Disable the XMPP-mortuary code. It's not ready for production yet.
Wilfried Göesgens [Sat, 27 Mar 2010 11:08:32 +0000 (11:08 +0000)]
cmd_chat(): use CCC instead of CC
Wilfried Göesgens [Sat, 27 Mar 2010 11:07:35 +0000 (11:07 +0000)]
* open_databases(): cast the yield function so the warning goes away.
Wilfried Göesgens [Thu, 25 Mar 2010 23:14:14 +0000 (23:14 +0000)]
* cdb_decompress_if_necessary(): memset 0 the buffer before accessing it
* cdb_decompress_if_necessary(): don't lean on cdb being big enough to fill our header
Wilfried Göesgens [Thu, 25 Mar 2010 23:12:09 +0000 (23:12 +0000)]
* client_read_sslblob(): don't use uninitialized values.
Wilfried Göesgens [Thu, 25 Mar 2010 22:53:51 +0000 (22:53 +0000)]
* html_to_ascii(): don't buffer underrun while checking whether we should append a trailing newline or not.
Wilfried Göesgens [Thu, 25 Mar 2010 20:34:55 +0000 (20:34 +0000)]
* unfold_rfc822_field(): don't forget to copy over chars while unfolding
Wilfried Göesgens [Wed, 24 Mar 2010 22:35:27 +0000 (22:35 +0000)]
* client_read_blob(): behave the same way in non-ssl as ssl, so we return <0 in case of errors.
Wilfried Göesgens [Tue, 23 Mar 2010 22:34:47 +0000 (22:34 +0000)]
* serv_read_binary(): in some cases we can get here without having anything in our read buffer; catch this situation.
Wilfried Göesgens [Tue, 23 Mar 2010 22:19:22 +0000 (22:19 +0000)]
* StrBufPlain(): secure input arguments; don't strlen(NULL)
Wilfried Göesgens [Tue, 23 Mar 2010 21:53:33 +0000 (21:53 +0000)]
* client_read_blob() don't swallow errorstates.
Wilfried Göesgens [Tue, 23 Mar 2010 21:05:20 +0000 (21:05 +0000)]
* qp_encode_email_addrs(): don't use static buffers for recipient parts; alloc the size of the total buffer here, so it fits in any case.
Art Cancro [Mon, 22 Mar 2010 18:31:36 +0000 (18:31 +0000)]
* More work on the XMPP dead buddy list
Art Cancro [Mon, 22 Mar 2010 04:57:27 +0000 (04:57 +0000)]
* more work on the dead buddies purge
Wilfried Göesgens [Sun, 21 Mar 2010 11:50:22 +0000 (11:50 +0000)]
* imap_fetch_rfc822(): migrate to strbuf
Art Cancro [Sun, 21 Mar 2010 04:40:39 +0000 (04:40 +0000)]
* clean up dead buddies from the xmpp roster (not finished yet)
Wilfried Göesgens [Sat, 20 Mar 2010 11:40:41 +0000 (11:40 +0000)]
* imap_listroom():
* use a nice name for buf
* don't use strcat, utilize that we know the size of string constants
Wilfried Göesgens [Sat, 20 Mar 2010 11:29:35 +0000 (11:29 +0000)]
* imap_append(): rename buffer, don't use it for several purposes
Wilfried Göesgens [Sat, 20 Mar 2010 11:20:24 +0000 (11:20 +0000)]
* string_append_c(): use another name for buf
* imap_roomname():
* 256 is double ROOMNAMELEN; calculate it here to show the relation in place
* extract_token() gives us -1 or the stringlength, use it instead of doing another strlen a line below
* use safestrncpy()
* do_imap_match():
* while lowercasing run till \0 rather than doing strlen above
* respect the size of the target buffer...
* For-loop: assign pointers here, since we start using them here; use IsEmptyStr all over the place (also some forgotten ones...)
Wilfried Göesgens [Sat, 20 Mar 2010 11:01:13 +0000 (11:01 +0000)]
* rename another buf
Art Cancro [Sat, 20 Mar 2010 00:25:36 +0000 (00:25 +0000)]
* Fixed some syntax errors in de.po:
Wilfried Göesgens [Fri, 19 Mar 2010 22:47:44 +0000 (22:47 +0000)]
* give static buffers either a meaningfull name or/and respect their size in write operations.
Art Cancro [Fri, 19 Mar 2010 17:29:27 +0000 (17:29 +0000)]
* libcitadel internal version number is now 7.80
* citadel and webcit now require libcitadel 7.80
* webcit now requires citadel 7.80
Wilfried Göesgens [Thu, 18 Mar 2010 20:49:05 +0000 (20:49 +0000)]
* sock_getln() should return the length of the string read, not bool for fail / success
Wilfried Göesgens [Thu, 18 Mar 2010 00:25:01 +0000 (00:25 +0000)]
* fix memleak
Wilfried Göesgens [Wed, 17 Mar 2010 22:52:36 +0000 (22:52 +0000)]
* CtdlClientGetLine(): we don't support Error while SSL I/O; remove it.
* client_readline_sslbuffer() put in Pos from the outside
* client_readline_sslbuffer() rewrite contents with StrBufTCP_read_buffered_line_fast() as sample
Wilfried Göesgens [Wed, 17 Mar 2010 19:14:29 +0000 (19:14 +0000)]
* client_read_sslblob(): don't leave CC->Pos on an invalid position
Wilfried Göesgens [Wed, 17 Mar 2010 19:13:19 +0000 (19:13 +0000)]
* some null'ing of our debug codes
Wilfried Göesgens [Tue, 16 Mar 2010 23:37:38 +0000 (23:37 +0000)]
* CtdlFetchMessage(): don't use strdup on a buffer we also can steal; this saves us one strlen, one malloc, and one memcpy.
Wilfried Göesgens [Tue, 16 Mar 2010 23:05:22 +0000 (23:05 +0000)]
* CtdlOutputPreLoadedMsg: use length calculated by safestrncpy instead of doing strlen on each loop iteration
Wilfried Göesgens [Tue, 16 Mar 2010 22:03:44 +0000 (22:03 +0000)]
* free some forgotten buffers
Wilfried Göesgens [Tue, 16 Mar 2010 21:27:26 +0000 (21:27 +0000)]
* fix imap uid fetching:
- imap_strip_headers() : fix loading of the line from the buffer
- imap_strip_headers() : split evaluation for headers_not/headers so we can more easily determine and abort if we want to print the header
- imap_strip_headers() : if ptr IS StrBufNotNULL we're done reading headers
- imap_fetch_body() : partial has to be a StrBuf too if its source is; adjust processing accordingly
Wilfried Göesgens [Tue, 16 Mar 2010 21:19:08 +0000 (21:19 +0000)]
* add iodbg switch to debian scripts
Wilfried Göesgens [Tue, 16 Mar 2010 21:18:09 +0000 (21:18 +0000)]
* StrBufReplaceToken(): source and dest of move operation was wrong
Wilfried Göesgens [Tue, 16 Mar 2010 19:46:30 +0000 (19:46 +0000)]
* StrBufStripAllBut(): cut at the right border not one char in front of it
Wilfried Göesgens [Tue, 16 Mar 2010 18:58:35 +0000 (18:58 +0000)]
* move the instant death to USR2 as dave questioned
Wilfried Göesgens [Mon, 15 Mar 2010 07:36:45 +0000 (07:36 +0000)]
* we did that +1 two lines above to avaid infinite loops
Wilfried Göesgens [Sun, 14 Mar 2010 23:28:02 +0000 (23:28 +0000)]
* move the pointer one to the right, else we will loop infinite.
-- Diese und die folgenden Zeilen werden ignoriert --
M lib/stringbuf.c
Wilfried Göesgens [Sun, 14 Mar 2010 22:31:07 +0000 (22:31 +0000)]
* exit citserver on SIG_USR1 instantly, so we have a clean exit hook for profiling etc.
Art Cancro [Sun, 14 Mar 2010 02:56:55 +0000 (02:56 +0000)]
* Call getnameinfo() without the flag that suppresses name lookups
Art Cancro [Sat, 13 Mar 2010 20:11:20 +0000 (20:11 +0000)]
* More tweaks to locate_host() but we still need to work on this because it does not resolve the host name.
Art Cancro [Sat, 13 Mar 2010 19:58:57 +0000 (19:58 +0000)]
* Port locate_host() to IPv6