| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, setBody() is called to set content to an
empty part. Everywhere in the code, this method is
called like an initializer, or behind a test checking
that the part is indeed MultipartNone.
But setBody() being in the public API, nothing
restrain the user to call it on a part that
already contains something, including several
subparts.
Ensure that subparts are removed when setting
a body with content. Similar to what is done in
addAttachmentsToMultipart(), unset the attachment
flag if the part we set a body to is actually a
message itself.
Change-Id: I245c5543cd85afed1176987e190900ff930efdbb
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
| |
Allow to list *.asc and *.sig (i.e. signature data)
as attachments when they are not used in a
multipart/signed context. Only hide such files
when they are used as second part in a
multipart/signed email.
Change-Id: Ie4ac7af88f30c817b10c044d986aba44e27faaf1
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Avoiding a lot of compiler noise from -Wsuggest-override.
Also removed the now even reduntant virtual keywords on overridden
methods as per qt coding conventions. And wrapped some overly long
lines touched by the changes.
Change-Id: I4e7febfa9554dfa7f366a1aabba6133a9f6c5614
Reviewed-by: Matthew Vogt <[email protected]>
Reviewed-by: Damien Caliste <[email protected]>
Reviewed-by: Christopher Adams <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Regression on the D-Bus ipc which introduced
e.g. Q_DECLARE_USER_METATYPE(QMailMessagePart) on qmailmessage.h.
On Qt6 the qRegisterMetaType() ends up instantiating
template<QDebug> QMailMessagePartPrivate::serialize(type)
which then fails to build due to not having << operator for
combination of QDebug and QMailMessagePartContainer::Location.
Compiler ends up spewing pages and pages of errors and warnings.
Not entirely following what's causing the difference to Qt5, and
how QDebug serialize() works with one class but not on other, but
suppose this explicit operator should be clean enough and avoiding
side-effects on the actually running code.
Change-Id: I4939e89d625ac06c682adbb5e31803e1ef019fd1
Reviewed-by: Damien Caliste <[email protected]>
Reviewed-by: Matthew Vogt <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
| |
QWARN() is deprecated in Qt6 and QByteArray::count() in Qt 6.4.
Both easy to avoid.
Translatable output in a unit test seems silly.
Change-Id: I9fab798cff548534789bb2830c00c650bed84143
Reviewed-by: Damien Caliste <[email protected]>
Reviewed-by: Matthew Vogt <[email protected]>
|
|
|
|
|
|
|
|
| |
Qt 5.15 replaced QAbstractSocket::error with errorOccurred, and the
old name removed in Qt6.
Change-Id: Id09b1594ea2e2c10b663ecdbb7380897c2d31725
Reviewed-by: Christopher Adams <[email protected]>
|
|
|
|
|
|
|
|
|
| |
Allows connections to be made to servers even when the TLS
certficiate is not trusted (e.g. broken certificate chain).
Change-Id: If912be7d7e4824f243471b40ef5c4d5acb0c31ab
Reviewed-by: Damien Caliste <[email protected]>
Reviewed-by: Matthew Vogt <[email protected]>
|
|
|
|
|
|
|
|
| |
This method is called by a timer and must be
a slot.
Change-Id: I3428174771320263d1fb667d55cff2a5c95878f7
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With QCop IPC implementation, received
signals where put in a message queue to
be processed in the next event loop
iteration. This is not needed anymore
with the DBus implementation, since
the receiving process lives in a different
thread and already submit received
signals in the event loop of the main
thread.
Change-Id: I4ebfb2b03f7ab21a27642d380b5dc2fe5c281791
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
Use the announced capabilities in SMTP/IMAP
plugin to setup the authentication method
to use. Add handling for error 504 on
authentication in SMTP.
Change-Id: I556281895e650768537fc6169816c3e8e6a81362
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduces a CalendarCancellation flag similar to the
QMailMessage::CalendarInvitation to be matched against the
QMailMessage::status() bitfield.
While the CalendarInvitation flag indicates that the message contains an
attachment of type text/calendar with "REQUEST" method, the
CalendarCancellation flag indicates that there's an attachment of type
text/calendar with "CANCEL" method type. In other words, a calendar
event cancellation.
For reference, the "CANCEL" method of the Content Type header is
described in RFC2447 (iMIP) Section 2.4 [1] in combination with the
RFC2446 (iTIP) sections 3.2 and 3.2.5 [2]
[1] https://tools.ietf.org/html/rfc2447#section-2.4
[2] https://tools.ietf.org/html/rfc2446#section-3.2
Change-Id: I1ef1d8a070e527552dae1ebe1677156bc07ba04d
Reviewed-by: Matthew Vogt <[email protected]>
|
|
|
|
|
|
|
|
|
| |
Avoid unused variable, QString conversion from ascii and move
fall through note so GCC detects it.
Change-Id: Id50a2b90c8c8c345a117c713849f65f45515eddb
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: Damien Caliste <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
That's actually a violation of the spec (RFC 2047):
https://tools.ietf.org/html/rfc2047#section-5
Each 'encoded-word' MUST represent an integral number of characters.
A multi-octet character may not be split across adjacent 'encoded-
word's.
but if charsets match, the data can be concatenated first and then
converted to characters. Which is what all other email clients seem
to be doing - I haven't found a single one which wouldn't handle it.
Change-Id: I5bbb785343ad60459fa6e52f5728fd796c7e5961
Reviewed-by: Pekka Vuorela <[email protected]>
Reviewed-by: Christopher Adams <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are two IPC mechanisms in QMF:
- one between the messageserver and clients
to perform actions like fetch emails,
search, etc.
- one between every mailstore instances
to notify other instances of changes
in the mail database.
QCop being discontinued, this patch switchs
to use DBus as an IPC transport layer.
The first mechanism is implemented by registering
an object on the session bus (/messageserver)
providing a service (org.qt.messageserver).
The second mechanism is implemented by
registering each client as an object to the
session bus (/mailstore/client) for the
interface org.qt.mailstore. Other clients
can then listen to updated() signal on this
interface.
DBus IPC requires to implement operator<<()
and operator>>() with QDBusArgument for the
objects that need to be transported. In all
cases, each objects are serialised up to
unitary elemental elements like int, byte
arrays, etc. Except for the QMailKeyArgument
that uses first a serialisation into a
byte array before being sent. This is due to
the recursive declaration of QMailKeyArgument
with the subKeys members, not working well
with QDBusArgument serialisation.
Change-Id: I8f10b8b00f73d4b75dad778b591159a765e9fb89
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The ActionObserver is responsible to spawn
ActionInfo objects when actionStarted() is
received from IPC. Then, the newly created
ActionInfo listens as normal Action for update
signals over IPC.
But, depending when the ActionInfo creation
is actually done, it may have missed IPC update
signals. To avoid this, the observer is sharing
its QMailMessageServer, and the newly created
ActionInfo can connect to signals that are still
pending in the message server.
Change-Id: I152fdcbeee7a902a0c54b58a28476cdfb31d4dbc
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There is a race condition in the way the observer
is listening on activity change for the actions it
is supervising. Indeed, the servicehandler is
emitting actionStarted() signal, and then
activityChanged(). The observer may receive these
signals asynchronously. But with the current
implementation, the observer starts listening at
activityChanged() after it has received the
actionStarted() one. The race condition appears
then if the servicehandler emits the activityChanged
before the observer received the actionStarted()
one.
This patch should correct this race condition by
making the observer always listen to activityChanged()
and deal with it if the activity corresponds to an
action it is supervising.
Change-Id: I339be274152e648dda50e8bb4667a8fdd70e4cba
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The possibility to transfer from client to the mail
server new or modified emails by file has been
deprecated by the usage of QMailMessageMetaDataList.
The client side implementation is already using only
the new method. So remove the server side implementation
and IPC interface.
Change-Id: I50df8ab04692748e3a1b66341f3b4cd05cc58501
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The QMailStorePrivate implementation is using cache
for read account, emails... This patch makes this
cache aware of a possible disconnection and
reconnection to the other store clients. The cache
is cleared on reconnection if the database was touched
since the last disconnection.
Change-Id: If85c66e3981b66d05ea201f72eefa3c3329bd813
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The newCountChanged signal is not used anymore
in the message server. Remove the client code
exposing it.
Remove also client method acknowledgeNewMessages()
since it's linked to newCountChanged signal to
reset the counters.
Remove the internal QMailMessageServerPrivate::initialize()
since it's not called from anywhere and the server
has no slot for this signal.
Change-Id: Id5a67c22eae2c7190c3e02ed0681eab7037f1fcc
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
Avoid uninitialized values with the default
QMailKeyArgument constructor. Also set FileLogger::do_cntr
in the class definition to avoid missing its initialization
in constructors.
Change-Id: If25e6a572c13aca0afb4d1017111e8ad769af01a
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
| |
The size of a QmfList may not be the same length
in bytes than an int.
Change-Id: If3c04944e22255b217502b1018b3aae898e333f7
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
| |
Change-Id: I5eef7a1e8b566e43af9e5dcb86d00b4aa0c891dd
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some mails don't provide the Content-Disposition:
tag, providing just a Content-Type:. This commit
modifies the findAttachment strategy to treat all
such parts as attachments if they are not of text
type, or known cryptographic parts. Example of such
disposition:
-------------02837317639187261987642987516514411
Content-Type: application/pdf; name=ebillet_1_2.pdf
Content-Transfer-Encoding: base64
Change-Id: I4eecc04134dcf40d2e39b856c29a0e60531221e8
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
| |
Fix a typo in MailKeyImpl::deserialize(). This causes messageserver to
eat all memory on some devices when searching mail.
Change-Id: I499213f2ad14087c8f97d65584b666bcced91286
Reviewed-by: Pekka Vuorela <[email protected]>
Reviewed-by: Christopher Adams <[email protected]>
|
|
|
|
|
|
|
|
| |
With this ~ is expanded to QDir::homePath(). This allows to store logs
inside home directory without knowing username.
Change-Id: I17cbd4b3d837eae7b5588991f18db7f6e76be2a4
Reviewed-by: Christopher Adams <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
| |
The previous situation could lead to undescriptive
messages in the log like "unable to account" for
the ::account() routine. Using longer sentences
enable to obtain something like "unable to inquire
account from id".
Change-Id: I6044ad99bc657231e894f204152eace979b3705e
Reviewed-by: Christopher Adams <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
| |
For some reason the '/' character that is defined as a protected
character in RFC2045 for values of parameters in header
Content-Type field, was missing. As a result the protocol
parameter for multipart/signed emails was not escaped which
is faulty and was confusing some email clients.
Change-Id: Id9d43b883187317ec152eea56819822612bfe307
Reviewed-by: Christopher Adams <[email protected]>
|
|
|
|
|
|
| |
Change-Id: I74ab80753eeca520ec074459602f299dc5a70b9f
Reviewed-by: David Llewellyn-Jones <[email protected]>
Reviewed-by: Christopher Adams <[email protected]>
|
|
|
|
|
|
| |
Change-Id: I6ae1fc17fa08c0b8fb14a37d5a1829175461a487
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
| |
Change-Id: Ifad72f55ca3988e84749d9f8868ec6d8d6c986ec
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
Any case where the address of an element is taken and stored or
used, must be changed to use QmfList instead of QList, otherwise
non-const operations will cause the reference to become invalid.
Change-Id: Ic0017cb9eddcf27b93d26adb3ea9c71682c4421b
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
QmfList provides some QList-esque syntax sugar around std::list,
providing a container with reference-stability (i.e. references
and iterators are not invalidated after non-const operations).
Change-Id: I9ecc2a6f5b926a9ea98425d960d2f915c26975a9
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
| |
It seems like invalid/null QDateTime values are no longer treated
properly as NULL SQL values when bound in SQL queries, in Qt6.
This commit ensures that null QDateTime and QString values are
bound specifically as null QVariant() values instead.
Change-Id: Id87cebf42649bd0425c361042e4ef5f49c236a62
Reviewed-by: Christopher Adams <[email protected]>
|
|
|
|
|
|
| |
Change-Id: I9822fb1b4fb8b46f1ea8aeb937206305e489af72
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
| |
Change-Id: I834645859e56a793f875892b038467c5d48291ef
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
| |
Change-Id: I4c15a1df37e0c440a7a731eeef8f42a1681f86e9
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
| |
Change-Id: I154b232699932a5c721cb7cff4476f20ac196cad
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
|
|
|
| |
This is used for QRegExp 'glob' matching and
QTextCodec in qmailcodec.cpp.
Change-Id: I6a222451bf6b124cbaab9d7687e40b39a30c2eb1
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
|
| |
Change-Id: I01f034b6099b414dce1bb59de79f6a50f61ad4de
Reviewed-by: Damien Caliste <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
Reviewed-by: Christopher Adams <[email protected]>
|
|
|
|
|
|
| |
Change-Id: I9db04a4f251b9e987b0e994135ee6e7ab12210cd
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
| |
Change-Id: I51d2a292275f100f1250ae46c223098b6fedfd11
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
| |
Change-Id: I394985aaf49f108cee9e7e9da8aae1d592b97c68
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
|
|
| |
Change introduced in 5.14
Change-Id: I162b12c244d4d85781116e88b7e345bc66f59f5a
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
|
|
| |
It was introduced in 5.15
Change-Id: Ic198cdef50287e60d06e9b0cfe2179c81a656994
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
| |
Change-Id: Iccea2c86266b4c20777d939b291084cb709bf592
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
| |
Change-Id: Ief9fe3083a0411be04ed8ff69263d7223368b877
Reviewed-by: David Llewellyn-Jones <[email protected]>
Reviewed-by: Christopher Adams <[email protected]>
|
|
|
|
|
|
| |
Change-Id: I6a2ff47a44f549155a7724dc057c70ce363bb1c0
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
| |
Change-Id: Icf88dcc0beaa3d4d4a1eadec547cda7b48b40af7
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
|
| |
Change introduced in 5.14
Change-Id: I88c9ec2e714eb6287902e5595579917e9874ea2b
Reviewed-by: Christopher Adams <[email protected]>
|
|
|
|
|
|
| |
Change-Id: I47ec90e476501749435a9cd2724ad42721789a62
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|