about summary refs log tree commit diff stats
path: root/src/xmpp/message.c
Commit message (Collapse)AuthorAgeFilesLines
* muc: save oldest timestampMichael Vetter2020-01-301-2/+7
| | | | | | | | | | | | | | | | | | So far we saved the timestamp which also had the `from`. But we need this only to find out whether it's MUC history. For displaying we should use the oldest delay timestamp. Also in https://github.com/profanity-im/profanity/commit/61f66966ddfe8ebd8bae26dd7ff92d777004edda#diff-4926fd4577a336bd3eb240f8104a5c5bL837 a error was introduced. Before we saved the timestamp in all cases. And only if timestamp AND from was given we went into MUC history case. Normal timestamp saving was not done anymore only if it also had a from attribute. Regards https://github.com/profanity-im/profanity/issues/1254
* Revert "Save first delay tag as timestamp"Michael Vetter2020-01-281-9/+0
| | | | | | | | This reverts commit ef00b10c90aef8b75415fae558789d21bb975d75. According to reply by user in https://github.com/profanity-im/profanity/issues/1254#issuecomment-578389784 it didn't help.
* Save first delay tag as timestampMichael Vetter2020-01-241-0/+9
| | | | | | | | | | | | So far we got the first delay with a from that comes from the server. This way we know it's MUC history. Now we take the first time stamp we actually find. Which is likely the one being added first. And should contain the correct time to display. It would be nicer to actually compare the dates though. Regards https://github.com/profanity-im/profanity/issues/1254
* Add vim modelineMichael Vetter2019-11-131-0/+1
|
* Check for correct delay tag for muc timestampsMichael Vetter2019-11-131-6/+7
| | | | | | | | | | | | | https://github.com/profanity-im/profanity/issues/1190 had another issue: Sometimes servers send multiple </delay> and we just checked the first one we got and only used it if the 'from' attribute was fitting. However it could be that we actually wanted the second </delay> element and there the 'from' would have been right. So we need to loop through them until we get the one with the fitting 'from'. Fix https://github.com/profanity-im/profanity/issues/1190
* _handle_groupchat(): get correct origin-id stanzaMichael Vetter2019-11-081-2/+2
| | | | | | | | | | | | | | | | | | The problem is that in _handle_groupchat() we look for STANZA_NS_STABLE_ID which will result in origin-id or stanza-id. It seems like prosody servers send origin-id first, so this worked in all my tests. But actually we cannot be sure of the order. So far we stopped after the first element was found. I only found xmpp_stanza_get_child_by_ns() and xmpp_stanza_get_child_by_name() in libstrophe. But we need a combination of both. So I created stanza_get_child_by_name_and_ns() for Profanity. I need to remember to upstream this to libstrophe later (if they really don't have such a function). Fix https://github.com/profanity-im/profanity/issues/1223
* Don't override ProfMessage Id with origin-idMichael Vetter2019-10-311-18/+40
| | | | | | | | | | Profanity sends the same value for both. Other clients might not. Safe both since we could need them later. Once we implement Last Message Correction we will need the regular id. If we override it with origin-id and another client chooses to not use the same value for id and origin-id then we can't interpret the id sent with the LMC request correctly.
* Set mucuser in carbon caseMichael Vetter2019-10-291-0/+8
| | | | | | | | | | | Also we initialize mucuser properly. Now in case of a carbon of a MUC PM we sv_ev_incoming_carbon() which calls _sv_ev_incoming_plain() and then we log it via chat_log_msg_in() in there. But we also get the sv_ev_incoming_private_message() and call chat_log_msg_in() in there too. So the incoming message get's logged twice.
* Make prof_identifier constMichael Vetter2019-10-221-1/+1
|
* Use UUID in origin-id and idMichael Vetter2019-10-221-6/+6
| | | | | Let's use UUID to have a more random string then just 10 alphanumeric values.
* Free hmac and msgidMichael Vetter2019-10-191-3/+4
|
* Change origin-id/id algoMichael Vetter2019-10-181-4/+19
| | | | | Hash twice. Use HMAC SHA256 from glib.
* Move message sent by us logic in own functionMichael Vetter2019-10-181-0/+16
|
* Remove prefix from stanza idMichael Vetter2019-10-171-8/+8
| | | | | We sent `prof_prefix_uuid` as id. Where the prefix was also optional. We don't need this at all.
* Improve MUC 1:1 loggingMichael Vetter2019-10-071-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we get a private message from a user in a MUC profanity shows this like: `profanity@roomsASDF.dismail.de/Martin: Hi` This was so far logged at: `~/.local/share/profanity/chatlogs/my-account-at-server/profanity_at_rooms.dismail.de/2019_09_04.log` as: ``` 10:48:13 - profanity@rooms.dismail.de: Hi ``` So the nickname was not saved anywhere. This is due to us not knowing whether we got a regular message from user@server.org/resource or a MUC PM from room@server.org/user. We now check for `<x xmlns='http://jabber.org/protocol/muc#user' />` and add the resourcepart to the logging if we get it. The file will be created at `~/.local/share/profanity/chatlogs/my-account-at-server/profanity_at_rooms.dismail.de_nick` and look like: ``` 23:59:43 - nick: Hi ``` Fix https://github.com/profanity-im/profanity/issues/1184
* Fix typo handel -> handleMichael Vetter2019-10-061-3/+3
|
* Detect MUC history correctly with some Prosody versionsMichael Vetter2019-09-301-1/+3
| | | | | | | | | | Some versions of prosody send the domainpart. See https://issues.prosody.im/1416 Workaround to handle those cases. Thanks to Holger Weiss for helping with this! Fix https://github.com/profanity-im/profanity/issues/1190
* Set message->plain in carbon caseMichael Vetter2019-09-041-1/+8
| | | | | message->plain should always contain something. In the case of the carbons we forgot to set if rom the body in case it's empy.
* Don't render (all) delayed messages as MUC historyHolger Weiß2019-08-201-2/+4
| | | | | | | | Double-check that a <delay/> tag on a groupchat message was actually added by the MUC service (rather than the sending client) before assuming it was received from the MUC history. Fixes #1173.
* Fix plaintext private message handlingPaul Fariello2019-07-041-3/+3
|
* Use correct jid variableMichael Vetter2019-07-031-1/+1
|
* Define goto out in _private_chat_handler()Michael Vetter2019-07-031-0/+1
|
* Set plain message in _private_chat_handlerMichael Vetter2019-07-031-0/+7
| | | | | | In case that plain is NULL we need to copy over from body. Fix https://github.com/profanity-im/profanity/issues/1144
* Fix a segfault when carbon has no bodyPaul Fariello2019-06-211-11/+13
|
* Don't highlight cleartext message as untrustedPaul Fariello2019-06-211-0/+1
|
* Fix segfault when receiving messages without IDPaul Fariello2019-06-211-1/+3
|
* Fix NULL pointer when handling non encrypted message in MUCPaul Fariello2019-06-211-1/+9
|
* Rename prof_message_t into ProfMessagePaul Fariello2019-06-201-7/+7
|
* Add prof_message_t to wrap all message attributesPaul Fariello2019-06-201-110/+140
| | | | | | | Probably missing copy of body to plain in carbon and privmessage. Only covers the incoming message path because goal is OMEMO decryption of untrusted message. Cover some of the log functions but not all.
* Use flags in xmmp/message.c for encryption and trustPaul Fariello2019-06-201-10/+20
|
* Add trusted state after OMEMO decryptionPaul Fariello2019-06-201-8/+11
| | | | Use it to print message on red background if not trusted.
* Call message_handlers_clear() upon disconnectMichael Vetter2019-06-201-0/+8
| | | | Free pubsub_event_handlers. Fix memory leaks.
* Rework MUC reflected message filteringPaul Fariello2019-04-101-4/+14
| | | | | | | | | Reflected messages can't be filtered by nick only otherwise you might ignore messages comming from you on another devices. Consequently we maintain a list of sent messages id in mucwin. To be sure the id will be correctly reflected we use the origin-id stanza.
* Fix devicelist notification handlerPaul Fariello2019-04-101-2/+1
| | | | devicelist handler should be kept after trigger
* Ensure encrypted carbon of own message are marked as encryptedPaul Fariello2019-04-101-1/+1
|
* Add support for disconnect in OMEMOPaul Fariello2019-04-101-0/+1
|
* Log and print outgoing encrypted messagePaul Fariello2019-04-101-2/+5
|
* Add support for sending encrypted message in MUCPaul Fariello2019-04-101-4/+10
|
* Add MUC message decryptionPaul Fariello2019-04-101-3/+9
|
* Add store hints for OMEMO encrypted messagesPaul Fariello2019-04-101-0/+2
| | | | | | | | | Store hints are required has some server might discard messages without body. Here we ensure OMEMO messages are stored on server and delivered to client when they connect back. It's really important since it avoid libsignal to desynchronize counters.
* Add support for libsignal-protocol-c 2.3.2Paul Fariello2019-04-101-1/+1
|
* Remove hints preventing carbons to work properlyPaul Fariello2019-04-101-3/+0
|
* Don't explicitely disable carbons for OMEMO messagesPaul Fariello2019-04-101-1/+0
|
* Add support for encrypted carbonPaul Fariello2019-04-101-4/+14
| | | | Fix {signed,}_pre_key store
* Follow normal workflow for OMEMO message receptionPaul Fariello2019-04-101-116/+27
| | | | | | We try to decrypt all messages, if it's successful we use sv_ev_incoming_message even for OMEMO messages. We pass an OMEMO boolean to let UI be aware that message were encrypted.
* Add chat session state to OMEMO message stanzaPaul Fariello2019-04-101-0/+5
|
* Add default body on OMEMO messagePaul Fariello2019-04-101-0/+8
|
* Add OMEMO message encryption and decryptionPaul Fariello2019-04-101-1/+202
|
* Fix devicelist subscription and handle pubsub eventPaul Fariello2019-04-101-21/+14
| | | | Devicelist subscription can be done directly with caps_add feature.
* Add pubsub event callbackPaul Fariello2019-04-101-0/+60
| | | | Also add generic message callback struct