]>
git.ipfire.org Git - thirdparty/dovecot/core.git/log
Timo Sirainen [Fri, 3 Jun 2016 16:17:03 +0000 (19:17 +0300)]
maildir: Avoid extra memory usage on duplicate uidlist entries
Also fixes assert-crashing in hash_table_insert() when it happens.
Timo Sirainen [Fri, 3 Jun 2016 14:54:36 +0000 (17:54 +0300)]
lib-index: Allow growing ext record_size after mail_index_update_ext()
The existing records will just get some zero-padding at the end of records.
Timo Sirainen [Fri, 3 Jun 2016 14:52:39 +0000 (17:52 +0300)]
lib-index: Fixed changing extension record sizes.
map needs to be cloned before any extension record size changes are done.
Otherwise the map cloning will crash or do something broken.
Timo Sirainen [Fri, 3 Jun 2016 14:40:11 +0000 (17:40 +0300)]
lib-index: Minor code cleanup - use better variable names
Baofeng Wang [Wed, 18 May 2016 11:42:21 +0000 (14:42 +0300)]
lib-storage: add no_fts in struct mail_search_arg
When flag is set, FTS will not be performed.
fts plugin: handle no_fts flag
No fts will be performed once flag is set.
Original patch from Timo Sirainen <timo.sirainen@dovecot.fi>
Baofeng Wang [Tue, 17 May 2016 08:45:50 +0000 (11:45 +0300)]
hash: refactor hash_table_insert_node() and its callers reference
Refactor *changes* the behavior of hash_table_insert().
* hash_table_insert() will assert when a key already exsists.
And hash_table_update() remains updating value when a key already exsists.
Refactor also changes the argument list referred by all its callers:
* hash_table_insert/update/resize().
Baofeng Wang [Tue, 17 May 2016 08:42:30 +0000 (11:42 +0300)]
lib-fts: fixup misuse of hash_table_insert()
Instead use hash_table_update() to replace value when a key exsists.
Timo Sirainen [Mon, 30 May 2016 16:07:16 +0000 (19:07 +0300)]
virtual: Moved virtual_mailbox_vfuncs to lib-storage.
This allows implementing other virtual storage backends.
Timo Sirainen [Wed, 1 Jun 2016 09:37:22 +0000 (12:37 +0300)]
master: Give a nicer error if unix/fifo_listener path is empty.
The previous error was simply:
unlink(/var/run/dovecot/) failed: Is a directory
Martti Rannanjärvi [Thu, 2 Jun 2016 12:11:21 +0000 (15:11 +0300)]
print CFLAGS on ./configure
Martti Rannanjärvi [Mon, 9 May 2016 12:24:28 +0000 (15:24 +0300)]
lib: net_get_ip_any[46]() to struct net_ip[46]_any
Also add struct net_ip[46]_loopback.
Baofeng Wang [Mon, 9 May 2016 11:04:47 +0000 (14:04 +0300)]
lib: remove useless NULL check after calling vstrconcat
behavior change accordingly.
Baofeng Wang [Wed, 20 Apr 2016 14:28:24 +0000 (17:28 +0300)]
liblib: *_strndup() and *_strconcat() shouldn't pass through NULLs.
Assert NULL string pointer in below functions:
i_strndup(), t_strndup() and p_strconcat(), t_strconcat(), i_strconcat() and
vstrconcat.
Replace former NULL condition check accordingly.
Baofeng Wang [Thu, 28 Apr 2016 08:47:59 +0000 (11:47 +0300)]
lib-fs: do NOT feed i_strconcat() with NULL
fill the string with valid content beforehand.
Baofeng [Tue, 12 Apr 2016 10:08:05 +0000 (13:08 +0300)]
storage: do NOT feed p_strconcat() with NULL.
p_strconcat will never take NULL as an valid argument.
So ns->list->set.alt_dir has to be checked NULL.
Baofeng [Mon, 11 Apr 2016 18:20:48 +0000 (21:20 +0300)]
auth: do NOT feed p_strconcat() with NULL
p_strconcat will never take NULL as an valid argument.
Check possible NULL string before calling it.
Teemu Huovila [Wed, 1 Jun 2016 09:24:57 +0000 (12:24 +0300)]
lib-fts: Improved stopword file reading.
The reading tries to be a little bit stricter now. Only stopwords at the
start of a new line are accepted now. Changed fi stopwords accordingly.
Also removed superfluous stack allocation in parsing.
Teemu Huovila [Mon, 30 May 2016 09:40:00 +0000 (12:40 +0300)]
lib-fts: Add stopword files for more languages.
Teemu Huovila [Mon, 30 May 2016 08:54:26 +0000 (11:54 +0300)]
lib-fts: Move stopwords to subdirectory.
All files incluided in dist are explicitly mentioned. The whole
subdirectory 'stopwords' could also be distributed, but that is
more error prone.
Timo Sirainen [Thu, 2 Jun 2016 13:06:08 +0000 (16:06 +0300)]
dict-sql: Improve error message for invalid value fields.
It'll now show which map's pattern matched, making it easier to find
from the config file.
Timo Sirainen [Wed, 1 Jun 2016 21:52:37 +0000 (00:52 +0300)]
dict: Pipelined iteration replies may have been hanging.
For example:
- lookup start
- iterate start
- iterate finished, but can't reply yet
- lookup finished
- iterate reply can be sent now, but wasn't previously
Timo Sirainen [Wed, 1 Jun 2016 21:51:26 +0000 (00:51 +0300)]
dict: Fixed crash when reaching max (5) pending commands.
Timo Sirainen [Wed, 1 Jun 2016 15:11:29 +0000 (18:11 +0300)]
global: Use i_stream_get_max_buffer_size() wherever possible
After
7be8ba0c0 it's no longer correct to access stream->max_buffer_size
directly. These changes fix using istream-chain with various wrapper
streams.
Timo Sirainen [Wed, 1 Jun 2016 15:09:48 +0000 (18:09 +0300)]
lib: i_stream_get_max_buffer_size() checks also parents' max sizes
This fixes i_stream_get_max_buffer_size() to work correctly with
istream-chain.
Timo Sirainen [Wed, 1 Jun 2016 15:03:58 +0000 (18:03 +0300)]
lib: istream-chain didn't update its max_buffer_size
I had this code at some point earlier, but looks like it got lost from the
final commit.
Timo Sirainen [Wed, 1 Jun 2016 14:52:23 +0000 (17:52 +0300)]
lib-compression: istream.max_buffer_size == 0 isn't unlimited.
Timo Sirainen [Wed, 1 Jun 2016 14:18:23 +0000 (17:18 +0300)]
fs-metawrap: Removed unnecessary code.
As mentioned in
a0cf7d392 , this can't happen.
Timo Sirainen [Wed, 1 Jun 2016 14:12:51 +0000 (17:12 +0300)]
lib-fs: Improved unit tests.
Timo Sirainen [Wed, 1 Jun 2016 14:12:10 +0000 (17:12 +0300)]
fs-metawrap: Removed unnecessary code.
The caller already set success==FALSE if ostream was closed.
Timo Sirainen [Wed, 1 Jun 2016 14:11:53 +0000 (17:11 +0300)]
lib-fs: Added more asserts
Timo Sirainen [Wed, 1 Jun 2016 14:06:28 +0000 (17:06 +0300)]
lib-fs: Clarified fs_write_stream_abort() API and dropped its _async().
We can't handle an abort after an async fs_write_stream_finish() is already
going.
Timo Sirainen [Wed, 1 Jun 2016 12:15:19 +0000 (15:15 +0300)]
lib-fs: Added fs_write_stream_abort_async()
Timo Sirainen [Wed, 1 Jun 2016 10:30:22 +0000 (13:30 +0300)]
lib: Fix to previous istream-chain max_buffer_size handling
We were casting the wrong stream.
Timo Sirainen [Tue, 31 May 2016 19:33:32 +0000 (22:33 +0300)]
fs-metawrap: Fixed buffer size while reading metadata header.
It's not enough to have the buffer size set to "large enough" at the time of
the stream creation, because i_stream_set_max_buffer_size() could be called
afterwards.
Timo Sirainen [Tue, 31 May 2016 19:19:37 +0000 (22:19 +0300)]
lib: Fixed max_buffer_size handling in istream-chain
The default max_buffer_size=256 was wrong in all situations.
We're now assuming that the underlying istreams' max_buffer_size is always
correct. While gluing together two streams we're now allocating enough
memory to hold all of the wanted data (instead of assert-crashing as could
have happened earlier). This means that the max memory usage is actually
the two streams' max_buffer_size summed together. Ideally this would be
fixed to limit the max_buffer_size to maximum of the two, but that would
require further changes.
Martti Rannanjärvi [Tue, 10 May 2016 07:19:57 +0000 (10:19 +0300)]
[LEN] to [static LEN] on some function parameters
Also add STATIC_ARRAY macro to hide it in c++ compilation.
Aki Tuomi [Wed, 1 Jun 2016 05:43:23 +0000 (08:43 +0300)]
doveadm: Do not use INT64 with mail cmds yet
Timo Sirainen [Tue, 31 May 2016 23:01:10 +0000 (02:01 +0300)]
lib-dcrypt: Fixed check program dependencies
Timo Sirainen [Tue, 31 May 2016 21:19:41 +0000 (00:19 +0300)]
lib-dcrypt: Fixed dcrypt_openssl_generate_keypair()
Timo Sirainen [Tue, 31 May 2016 21:12:44 +0000 (00:12 +0300)]
lib: Fixed file_copy() after recent changes.
Timo Sirainen [Tue, 31 May 2016 14:16:17 +0000 (17:16 +0300)]
dict-client: Fixed idle_msecs setting.
Timo Sirainen [Tue, 31 May 2016 14:06:29 +0000 (17:06 +0300)]
lib-fs: Don't duplicate backend name in fs_init() errors.
fs_init() already adds the "backend: " prefix to the error_r, so the callers
shouldn't do it again.
Timo Sirainen [Tue, 31 May 2016 14:01:41 +0000 (17:01 +0300)]
lib-storage: Fixed error_r with mail_storage_service_lookup_next()
We no longer want to hide the actual error message.
Timo Sirainen [Tue, 31 May 2016 09:24:01 +0000 (12:24 +0300)]
lib: iostream-temp: Fixed o_stream_send_istream()
Aki Tuomi [Mon, 30 May 2016 19:39:39 +0000 (22:39 +0300)]
lib-dcrypt: Use base64 encoded test samples
Aki Tuomi [Mon, 30 May 2016 19:33:29 +0000 (22:33 +0300)]
lib-dcrypt: Fix strict type-punning warning
Aki Tuomi [Mon, 30 May 2016 19:30:31 +0000 (22:30 +0300)]
lib-dcrypt: Fix various OpenSSL API usage issues
Aki Tuomi [Mon, 30 May 2016 19:05:22 +0000 (22:05 +0300)]
lib-dcrypt: Remove duplication of samples
Timo Sirainen [Mon, 30 May 2016 18:41:12 +0000 (21:41 +0300)]
lib-dcrypt: Finish previous t_malloc() change.
Martti Rannanjärvi [Tue, 17 May 2016 08:38:14 +0000 (11:38 +0300)]
Replace some t_malloc_no0 calls with t_malloc0
This might increase safety.
Martti Rannanjärvi [Tue, 17 May 2016 07:56:53 +0000 (10:56 +0300)]
Use t_new in complicated t_malloc_no0 calls
Martti Rannanjärvi [Tue, 17 May 2016 07:35:35 +0000 (10:35 +0300)]
Remove t_malloc in favour of t_malloc_no0
Using either t_malloc_no0 or t_malloc0 makes it clear whether the
allocated memory is zeroed or not.
Timo Sirainen [Fri, 20 May 2016 12:16:41 +0000 (15:16 +0300)]
o_stream_send_istream() API changed again
The new API enforces the caller to correctly handle all the possible
situations. It also makes in unambiguous whether to wait for input or
output stream.
Timo Sirainen [Mon, 30 May 2016 18:14:53 +0000 (21:14 +0300)]
lib-dcrypt: Always allow error_r to be NULL.
Especially dcrypt_openssl_private_to_public_key() was called with
error_r=NULL by the dcrypt.c itself.
Timo Sirainen [Mon, 30 May 2016 16:38:22 +0000 (19:38 +0300)]
lib-dcrypt: sample-v2.bin shouldn't be executable
Timo Sirainen [Mon, 30 May 2016 12:36:17 +0000 (15:36 +0300)]
lib-dcrypt: Compiler warning fixes
Timo Sirainen [Fri, 27 May 2016 10:01:41 +0000 (13:01 +0300)]
lib-storage: mail_storage_service_next() now returns error string.
Timo Sirainen [Fri, 27 May 2016 09:55:36 +0000 (12:55 +0300)]
lib-storage: mail_storage_service_lookup() now returns the full error.
Timo Sirainen [Fri, 27 May 2016 09:49:30 +0000 (12:49 +0300)]
lmtp, quota-status: Don't send mail_storage_service_lookup() error to client.
This is in preparation for changing the returned error to contain the full
error string. The current error string is pretty useless for any purpose.
Timo Sirainen [Fri, 27 May 2016 19:18:17 +0000 (22:18 +0300)]
doveadm mailbox delete: Added --unsafe option.
Timo Sirainen [Fri, 27 May 2016 19:15:07 +0000 (22:15 +0300)]
lib-storage: Added MAILBOX_FLAG_DELETE_UNSAFE
Aki Tuomi [Thu, 5 May 2016 21:29:16 +0000 (00:29 +0300)]
configure: Include lib-dcrypt in core
Aki Tuomi [Wed, 27 Apr 2016 11:08:00 +0000 (14:08 +0300)]
lib-dcrypt: Initial implementation
Aki Tuomi [Mon, 30 May 2016 11:45:09 +0000 (14:45 +0300)]
doveadm-director: Fix commands so that they compile
Timo Sirainen [Fri, 27 May 2016 08:29:09 +0000 (11:29 +0300)]
doveadm mailbox delete: Added -e parameter to delete only empty mailboxes.
Aki Tuomi [Wed, 24 Feb 2016 10:10:19 +0000 (12:10 +0200)]
doveadm-director: Convert to ver2 infra
Stephan Bosch [Sun, 29 May 2016 17:14:58 +0000 (19:14 +0200)]
imap: Implemented support for the LITERAL- capability.
This replaces the LITERAL+ capability when the imap_literal_minus setting is enabled.
Stephan Bosch [Sun, 29 May 2016 17:23:39 +0000 (19:23 +0200)]
lib-imap: imap-parser: Turned the fatal error flag into a proper error code.
Stephan Bosch [Sun, 29 May 2016 17:58:55 +0000 (19:58 +0200)]
lib-imap: imap-parser: Made the fatal result parameter of imap_parser_get_error() optional.
Stephan Bosch [Sun, 29 May 2016 17:39:13 +0000 (19:39 +0200)]
lib-imap: imap-parser: Renamed error field to error_msg.
Timo Sirainen [Fri, 27 May 2016 18:55:56 +0000 (21:55 +0300)]
dbox: Revert cache changes if some save/copy fails but transaction is committed.
Timo Sirainen [Fri, 27 May 2016 18:34:26 +0000 (21:34 +0300)]
lazy-expunge: Don't fail expunge if mail was already expunged.
Timo Sirainen [Fri, 27 May 2016 18:32:23 +0000 (21:32 +0300)]
lazy-expunge: Fixed error logging.
Timo Sirainen [Fri, 27 May 2016 15:30:01 +0000 (18:30 +0300)]
dsync: Debug logging improvement.
Timo Sirainen [Fri, 27 May 2016 11:38:17 +0000 (14:38 +0300)]
lib-fs: Fix to previous fs-metawrap commit
Argh. I was sure I compiled this before pushing it.
Timo Sirainen [Fri, 27 May 2016 11:33:47 +0000 (14:33 +0300)]
lib-fs: fs-metawrap: Improved error logging on corrupted files.
Timo Sirainen [Fri, 27 May 2016 10:33:21 +0000 (13:33 +0300)]
lib-http: Default port for http should be 80, not 443.
Timo Sirainen [Thu, 26 May 2016 16:13:40 +0000 (19:13 +0300)]
doveadm: Fixed sending command -parameters to doveadm-server
Timo Sirainen [Thu, 26 May 2016 18:40:30 +0000 (21:40 +0300)]
sdbox: Make sure we don't crash when altmove-flag is set but alt path is missing.
Timo Sirainen [Thu, 26 May 2016 15:27:27 +0000 (18:27 +0300)]
lib-http: Improved error logging for net_set_*_buffer_size() failures.
Timo Sirainen [Thu, 26 May 2016 15:25:06 +0000 (18:25 +0300)]
dict-sql: Fixed memory leak
Stephan Bosch [Sun, 22 May 2016 08:38:18 +0000 (10:38 +0200)]
lib-http: client: Created test program that triggers most possible error conditions.
Stephan Bosch [Tue, 24 May 2016 01:11:07 +0000 (03:11 +0200)]
lib-http: test-http-payload: Added tests for the use of nested ioloops.
Stephan Bosch [Mon, 23 May 2016 19:57:18 +0000 (21:57 +0200)]
lib-http: test-http-payload: Added cleanup code to make sure no child processes get orphaned at failures.
Also handles SIGSEGV and SIGABRT.
Stephan Bosch [Sun, 22 May 2016 17:16:42 +0000 (19:16 +0200)]
lib-http: test-http-payload: Added -D option to easily enable debug mode.
Stephan Bosch [Mon, 23 May 2016 01:16:07 +0000 (03:16 +0200)]
lib-http: test-http-client: Callback is not called for explicitly aborted requests.
Test request context was not freed in that case.
Stephan Bosch [Wed, 25 May 2016 21:41:47 +0000 (23:41 +0200)]
lib-http: client: Fixed bug in handling of lost connections while returning from another ioloop.
At one instance the http_client_connection_is_ready() function could have destroyed the connection while the caller still depended on it.
Renamed the http_client_connection_is_ready() function to http_client_connection_check_ready().
This now returns -1 when the connection got destroyed. Before it returned a bool that just indicated whether the connection was ready or not.
So, there is no need anymore to preserve a connection reference while calling this function.
Stephan Bosch [Mon, 23 May 2016 00:38:49 +0000 (02:38 +0200)]
lib-http: client: Reworked connection close handling.
Now, the peer is immediately notified of the lost connection.
Before, this step was only taken when the connection was fully dereferenced.
To prevent recursive notifications between peer and connection, handling the loss of a connection is deferred to the request handler.
When a peer is freed, any associated lingering connections have conn->peer set to NULL.
Stephan Bosch [Mon, 23 May 2016 00:36:10 +0000 (02:36 +0200)]
lib-http: client: Improved labeling of debug messages.
Request label is corrected.
Labels are now pre-composed and stored.
Stephan Bosch [Sun, 22 May 2016 10:48:37 +0000 (12:48 +0200)]
lib-http: client: Prevent useless and unexpected request callbacks during http_client_deinit().
Requests are now destroyed before queues, hosts, peers and connections.
As a side-effect, requests are now removed from the client request list at http_client_request_destroy(), so that requests with lingering references will no longer make http_client_wait() hang.
Stephan Bosch [Thu, 19 May 2016 22:04:12 +0000 (00:04 +0200)]
lib-http: client: Added settings to configure the connection's socket kernel buffer sizes.
This is mainly useful for use in the lib-http test suite.
Stephan Bosch [Thu, 19 May 2016 22:02:49 +0000 (00:02 +0200)]
lib: Implemented net_set_send_buffer_size() and net_set_recv_buffer_size().
These functions allow manipulating the kernel socket buffer sizes for a socket file descriptor.
Stephan Bosch [Thu, 19 May 2016 21:42:14 +0000 (23:42 +0200)]
lib-http: client: Removed curiously duplicated code.
Probably a patch got applied with sufficient fuzz that it duplicated this code fragment, while it actually already existed.
Stephan Bosch [Sat, 21 May 2016 11:17:58 +0000 (13:17 +0200)]
lib-http: client: peer: Improved debug message that shows the loss of a connection.
Stephan Bosch [Fri, 20 May 2016 22:16:21 +0000 (00:16 +0200)]
lib-http: client: Made peer object reference-counted to prevent invalid memory access in request handling routine.
Resetting the peer->handling_requests flag risked triggering a segfault, since the peer object could be deleted from within the request handler loop.
Stephan Bosch [Sat, 21 May 2016 11:16:08 +0000 (13:16 +0200)]
lib-http: client: Improved request reference counting in connection code.
It should now always be clear when the connection object holds a reference to a request and when it is released.
Only while the reference is held, req->conn points to a connection.
This also makes the assertion in http_client_request_unref() more robust and clear.
Stephan Bosch [Sun, 22 May 2016 08:42:01 +0000 (10:42 +0200)]
lib-http: client: Fixed reference counting for requests that are aborted due to an early server response.
An additional http_client_request_unref() is (now) unneccessary.
Stephan Bosch [Thu, 19 May 2016 21:40:26 +0000 (23:40 +0200)]
lib-http: client: Fixed reference counting for requests that are aborted due to having a broken outgoing payload stream.
Timo Sirainen [Wed, 18 May 2016 16:40:32 +0000 (19:40 +0300)]
lib-http: Changed http_client_request_error to set request to NULL
It's going to internally unreference it, so the caller should be aware of it
also.
I also changed request state check to be an assert, since I don't think
there's any safe way this could work otherwise.
Stephan Bosch [Fri, 20 May 2016 22:16:38 +0000 (00:16 +0200)]
lib-http: response parser: Added check for the range of the response status value.
A value of 666 was accepted inappropriately.