Skip to content
Snippets Groups Projects
  1. Jul 31, 2017
  2. Jul 26, 2017
    • Philipp Hörist's avatar
      9d6e3f43
    • Philipp Hörist's avatar
      Correctly set stanza-id for received MAM messages · 7f0bcbb5
      Philipp Hörist authored
      The gaol why we need to determine what ID should be used as stanza-id,
      is so we can use the stanza-id in the future for deduplication.
      
      Case we are the sender:
      
      Either we look for a origin-id element, which we will include in the
      Future in all messages we send, or until then the ID we set on the
      message as attr.
      
      Case we are the receiver:
      
      If our server supports mam:2 we take the ID of the result element,
      because mam:2 injects the archive ID live into every message we
      receive. If we dont have mam:2 we fall back to the ID of the message
      attr.
      7f0bcbb5
  3. Jul 25, 2017
  4. Jul 24, 2017
  5. Jul 20, 2017
  6. Jul 19, 2017
    • Philipp Hörist's avatar
      Remove redundant source_remove() · 96cbed4f
      Philipp Hörist authored
      We remove the source in _schedule_activity_timers()
      96cbed4f
    • Philipp Hörist's avatar
      Fix multiple metacontact requests at startup · 5e1e4e27
      Philipp Hörist authored
      _continue_connection_request_privacy() should only trigger
      once after we received the discoinfo on the hostname.
      
      We do a discoinfo on all items that the server offers,
      _continue_connection_request_privacy() was triggered on every received
      discoinfo again, hence requesting metacontacts and delimiters again.
      
      also _continue_connection_request_privacy() was called on every
      discoinfo error, instead of only on a hostname discoinfo error.
      
      This bug is only triggered if the server doesnt support privacy rules.
      5e1e4e27
    • Philipp Hörist's avatar
      Fix discovery of MAM · a754c059
      Philipp Hörist authored
      a754c059
    • Philipp Hörist's avatar
      Play sounds on MacOS · 47c33bbe
      Philipp Hörist authored
      47c33bbe
    • Philipp Hörist's avatar
      Fix not requesting roster on empty cache.db · cdc2ec92
      Philipp Hörist authored
      The purpose of
      
      `if version and not gajim.contacts.get_contacts_jid_list()`
      
      seemed to be that when cache.db is empty (maybe it was deleted)
      `gajim.contacts.get_contacts_jid_list()` should come back empty.
      
      So on an empty roster cache, version was set to None, so that we
      request in any case a new roster.
      
      The Problem is that `gajim.contacts.get_contacts_jid_list()` is not
      a good indication for an empty cache.db. On start we trigger a
      `RosterReceivedEvent` which does a DB query to get the roster. Even
      if that DB query comes up empty, the Event is still pushed.
      
      In the event handler `_nec_roster_received` in roster_window.py we
      add then previously open controls and our self (if the option is set)
      to the roster, making `gajim.contacts.get_contacts_jid_list()` return
      these contacts and hence the condition in `request_roster()` always
      False.
      
      So the version is set in the roster request, and if there is no new
      version on the server, we request no new roster even though we only
      have ourself and previously open controls in our roster.
      
      As a solution for this we delete the roster version from the config
      in `RosterReceivedEvent` if the DB query comes back empty, which
      triggers a new roster request.
      cdc2ec92
  7. Jul 16, 2017
  8. Jul 12, 2017
  9. Jul 11, 2017
  10. Jul 10, 2017
    • Philipp Hörist's avatar
      Change defaults on history restore options · cc682d24
      Philipp Hörist authored
      Set restore timeout inactiv, this should be really an advanced option,
      probably only set for specific MUCs not as default for every MUC.
      
      Set restore_lines to 10, so the User has an indication that Gajim can
      display history, and that there is probably a setting to adjust.
      
      Set muc_restore_lines to 100, this is a try to get a reasonable amount
      of history, especially in small Groupchats. Most server will limit this
      to 20-50 anyway. The limit 100 is more of a precaution if we run into a
      misconfigured server. This is intended as a workaround until we can
      implement MAM for Groupchats.
      cc682d24
    • Philipp Hörist's avatar
      Fix unlimited muc_restore_timeout · a818b60b
      Philipp Hörist authored
      muc_restore_timeout set to -1 means we want no particular time set, up
      to which we request messages. But we should not deliberate request
      messages we already have. Hence even if muc_restore_timeout is set
      to -1, we should only request up to the last message we received.
      a818b60b
    • Philipp Hörist's avatar
      b625199c
    • Philipp Hörist's avatar
      Use correct history date on muc join · aeb64a51
      Philipp Hörist authored
      Example:
      If we receive a message the last message date is now.
      If we restart Gajim and join the MUC again, `time.time() - timeout`
      will be most likly smaller then when we received the last message
      If the timeout is an hour, this would mean that many messages are requested
      from the archive which we already received.
      
      So we always want the most current timestamp (MAX).
      aeb64a51
    • Philipp Hörist's avatar
      Commit to DB before shutdown · 5a896579
      Philipp Hörist authored
      Because some operations use the _timeout_commit() it happens that a timeout
      is active while we shutdown.
      
      This makes sure everything is commited before shutdown.
      5a896579
  11. Jul 09, 2017
    • Philipp Hörist's avatar
      Fix memory leak in plugins window · 0eca29d4
      Philipp Hörist authored
      - remove gui extension point on close, to remove the reference the plugin manager holds to the Class.
      
      - reduce scope of var that holds reference to Gtk.Builder(). We have to be careful with
      Gtk.Builder, because it can hold a reference to our Class (methods bound to signals) which creates a reference cycle
      which python is not able to detect. Hence neither Gtk.Builder nor our Class are garbage collected.
      Why this is not detected as a reference cylce is unclear at the moment.
      
      There are two approaches to circumvent the problem:
      
      1. we lose our reference to Gtk.Builder when closing the window, which lets python garbage
      collect the builder, afterwards it can garbage collect our class.
      
      2. we reduce the scope of the var that holds a reference to Gtk.Builder, so that the builder
      can be garbage collected at the end of __init__.
      
      I chose to reduce the scope because the builder is not needed class wide.
      0eca29d4
  12. Jul 05, 2017
  13. Jul 04, 2017
  14. Jul 03, 2017
  15. Jul 02, 2017
Loading