Add EmailExtension plugin extenion with context object and
Application.EmailContext implementing it. Check for plugins with
this type in PluginManager and init/deinit their contexts as needed.
This lets a packager ensure that the binary object built from an
unpacked source tarball is identical to the binary object created from
a live git tree.
I hope to use it in debian with something like -Drevno=debian/3.36.1-1
during the meson configuration, so that the help dialog box and the
bug reporting logs can identify the specific build.
Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
Use Geary's private lib sub-directory so that the library won't be found
on the global library search path. Version the library name to avoid
clashes. Update the binary's rpath on install so it can find the lib
still.
Fixes#775
When attaching body parts to a message from a composed email, don't
re-use the transfer encoding used from the plain part for the HTML part,
since the latter may be different if e.g. the HTML contains no line
breaks and hence is a single long line.
See #771
By not closing/flushing the buffer, ::get_best_charset and
::get_best_encoding were not including the last line of the buffer, and
missing single very long lines when guessing the encoding.
Fixes#771
We do not set double dots after the other labels so remove it for the
'From' label as well.
Therefore, adjust the .ui file to have the right label (with the
mnemonic underscore) and remove the adjustment of it in code.
We're getting another report of segfaults from GDataOutputStream's
internal thread (in addition to the issue that commit 479e9946 was
workgin around), so just stop using it.
By using a buffered stream and writing directly to it, we won't block
the main thread except for commands with very large parameter sets,
which shouldn't happen too often.
Convert mailbox and mailbox RW/RO state accessors to properties and
rename to be more explicit about what they mean. Remove mailbox arg
from ::getProtocolState() since it's unused.
Add namespace accessors, handle updating namespaces when processing
the received data, not when executing the command so that unsolicited
namespaces are still recognised. Clear namespaces when new data is
receieved and when not in selected and auth states. Add unit tests.
Move Capabilities to the api directory and make immutable.
Don't pass around out params to simply increment the revision and use a
field in ClientSession, just use the last capability instance. Ensure
after starting a TLS session capabilities are cleared. Add unit tests
for getting both implicit and explicity capaibilities when initiating
a client session.
Allow specifying the connect greeting timeout length, ensure that
any connect errors are in place before releasing the connect waiter,
add unit test to ensure it works properly.
Rename private fields to be more descriptive. Don't keep both a
SocketConnection and an IOStream around and always try to close both.
In the case of a TLS connection, just check if the stream is a TLS class
and close the inner stream if needed. Tidy up serialiser and
deserialiser management.
Remove converter since it is unused, ensure DataOutputStream is closed
when the deserialiser is stopped. Rename dins property to be something
more descriptive.
Remove connect, disconnect and close_error signals, since they are
implied by their respective methods completing and/or throwing an
error. Remove Deserializer pass-through signals, treat all three kinds
as generic receive errors instead.
Make Deserializer emit end-of-stream signal only on EOS, not on EOS and
on receive error, so it only signals an error condition once.