- DeletePOP3Aggregator() free the read message struct
- comment out table revalidation
- remove duplicate return statement
- correctly handle queueing of dns query. We don't care about the result.
- Fix varous Memleaks
- pop3client_scan_room() Combine old pop3collector syntax into a parseable URL.
- use just one URL pointer
- POP3C_GetOneMessageIDFromUseTable(): duplicate; obsolete; deleted.
- add username to pop3 usetable entries
- use our own Context
When QP encoding, we need to convert blanks to underscores
- Spamassasin test 'BAD_ENC_HEADER' matches if a subject looks like that:
Subject: =?UTF-8?Q?=5Btestml=5D l=C3=B6sch misch ey.?=
it needs to look like that:
Subject: =?UTF-8?Q?=5Btestml=5D_l=C3=B6sch_misch_ey.?=
- Ctdl_GetUtf8SequenceLength(): testbyte needs to be unsigned char, else >> will shift us new bits in from the left
- we need to shift 'test' to the right
- start counting at 0
Fix StrHtmlEcmaEscAppend() more edge cases in utf8 handling
- Ctdl_GetUtf8SequenceLength(): return 0 for broken, 1 for non-utf8 sequences
- StrHtmlEcmaEscAppend(): another attempt to fix json appending:
- use switch instead of Rumpelstilskin if sequence
- use HKEY for our static sequences
- don't check for buffer expansion again while utf8-handling; we have 11 bytes reserved, utf8 will at most become 6 bytes
- Simply handle ASCII chars in the utf8 loop
- since aptr is moved implicitely, we mustn't move it for the last byte
- add missing handling for some escapers
- let unicode escapers pass
- POP3_C_ReAttachToFetchMessages(): we manage the transition DB-IO -> Network I/O
- POP3C_GetListCommandState(): after receiving the list-OK we have to continue reading the list items
- POP3C_GetListOneLine(): the server sends us the size of the message; save it for later use.
- POP3C_GetOneMessagID(): after reading all list-items, start DB lookup whether we knew them already.
- POP3C_GetOneMessageIDState(): if more items are in the list, call us again with the next message ID.
- POP3_FetchNetworkUsetableEntry(): fetch one UT-entry per call; forward to POP3_C_ReAttachToFetchMessages() once we saw all items in the list.
- POP3C_SendGetOneMsg(): cycle over the list till we find the next Mail we didn't know already & fetch it; if no more items in list -> goodbuye.
- POP3C_ReadMessageBody() after the I/O layer read the message from the socket, parse it; move our context over to the DB-Queue.
- POP3C_ReadMessageBodyFollowing(): On success initialize the async message reader; let the I/O layer read the message, then continue parsing & saving it.
- POP3C_StoreMsgRead(): parse & save the message to the DB. Continue with remembering it in the UT table.
- POP3C_SendDelete(): check whether we want to delete the mails on the server, if do; else continue with POP3C_SendGetOneMsg() to fetch next in list.
- POP3_C_ReadServerStatus(): switch between line based read operation and reading whole messages.
we now can successfully aggregate one pop3 account.
add infrastructure to cleanly swap inbetween the DB and the IO queue; add infrastructure needed for async message reading.
- QueueDBOperation(): use our own vars on the AsyncIO struct, so we don't overwrite handlers & events from the file I/O stuff.
- DB_PerformNext(): don't use default: so we get warnings if new states are added and not handled here.
- DB_PerformNext(): if we don't get a DB query or Terminate, the db operations are done, remove our handlers, this AsyncIO context is handed over into another Queue by the application logic.
- NextDBOperation(): use our own vars on the AsyncIO struct, so we don't overwrite handlers & events from the file I/O stuff.
- HandleInbound(): handle more read-states; needed for message reading.
- HandleInbound(): move Rumpelstilskin lookup if to switch()
- IO_send_callback(): fix/add IO debugging to /tmp/foo
- IO_send_callback(): Adjust switch to some edge cases:
- eSendReply: check whether we're done with sending, if, fall forward to writing.
- eReadMore: was missing, continue reading (if)
- eReadPayload: new, read smtp messages for example.
- eDBQuery: the application logic want to perform database I/O with this context, clean up hooks and remove it from this queue.
- set_start_callback(): properly hanle the new cases
- IO_recv_callback(): fix/add IO debugging to /tmp/foo
- ReAttachIO(): use me if you want to continue with file I/O after i.e. DB-I/O
- CtdlSubmitMsg(): make param const, since its just read
- add NewAsyncMsg(): preprocess the parameters provided by application logic, return the worker struct for message reading
- add CtdlReadMessageBodyAsync(): call me from your IO handler to read a message from the socket asynchroneous.
- add DeleteAsyncMsg(): call me to delete the worker vars.
- rewrite the config parser similar to the rss-configparser
- copy over handler logic from async smtp connector
- chop worker into handy bits so the handler logic can control it.
- for now, no shorter URL expansion
- replace handling of configs, old algorythm wasn't thread-safe
- DB i/o is done in its own libev Queue in its own thread now; so we don't block network IO with database IO.
- when encoding plain md5 binary buffers we have to pass the length into the hex encoder, add parameter
- add wrapper providing old schematic
- fix documentation of StrBufSipLine()
when not forking, we fail to drop rood privileges in advance before writing netconfig files, so we loose later access to them. Sadly we don't know our GID...
- add states for the mx lookup phases
- return the propper states
- close filedescriptors if we fail one attempt
- say which connection type we have: immediate, e_again, fail
- say which NS-lookup whe do (a/aaaa)