Skip to content
Snippets Groups Projects
  1. Mar 17, 2022
    • Andreas Traczyk's avatar
      logger: add console logging code for Windows · 0c57cee5
      Andreas Traczyk authored
      Previously, AllocConsole was called from the client. This has been
      moved into the ConsoleLog class. When calling Logger::setConsoleLog
      an attempt to attach to the console of the parent process will be
      made first. This will be the case when Jami is being run from a
      command line with the debug option. Otherwise, the logger will use
      AllocConsole to instantiate a console window for the logs. The
      latter will have it's lifetime bound by Jami.
      
      Change-Id: I7f1728626962a2f702ad564bb16deadc2d92dfb7
      0c57cee5
    • Aline Gondim Santos's avatar
      conference: make single transfer to main memory · f6f8a837
      Aline Gondim Santos authored and Aline Gondim Santos's avatar Aline Gondim Santos committed
      While in a conference, the video split added a transfer to
      main memory for each of the participants. This makes the sinkClient
      a observable and the participants sinks are attached to the main
      conference sink. The main sink has its frame transferred and the
      subsequent observers do not need to repeat the process.
      
      GitLab: #709
      Change-Id: I1f4ea9460c052a100b4809101c35d196cd79acbe
      f6f8a837
  2. Mar 15, 2022
  3. Mar 09, 2022
  4. Mar 04, 2022
  5. Mar 03, 2022
    • Andreas Traczyk's avatar
      video interface: homogenize decoding signal names · f26f20d5
      Andreas Traczyk authored
      Change-Id: Ica925c83e44e2326417708768566e33102365ce9
      f26f20d5
    • Olivier Dion's avatar
      Build system: No '--disable-shared' · 775aa2f8
      Olivier Dion authored and Sébastien Blin's avatar Sébastien Blin committed
      The agent and unit tests can now be compiled without requiring
      `--disable-shared' at configuration time.
      
      The agent requires the logger functions to have default visibility instead of
      hidden.  Thus, `jami::logger::[v]log' can be considered part of the public API.
      
      The unit tests however require hidden symbols.  Thus, we link the tests against
      a static version of libjami instead.
      
      Change-Id: I59d9e67679766e0310a19f9a879c06a31c5124c4
      775aa2f8
  6. Feb 28, 2022
    • Mohamed Chibani's avatar
      Mute audio: do not change media direction · c3d0e5eb
      Mohamed Chibani authored
      Mute/un-mute audio is done only locally, i.e. without requesting
      a media change (re-invite) as done for the video, thus the media
      direction in the SDP must not change for the audio stream.
      
      Gitlab: #688
      
      Change-Id: I3775a29f6c566a159d5b9269b4d9462ab4e3c36f
      c3d0e5eb
  7. Feb 25, 2022
    • Maxim Cournoyer's avatar
      globals.mk: Remove dead code. · 0f0bb5d8
      Maxim Cournoyer authored and Amin Bandali's avatar Amin Bandali committed
      astyle was removed in favor of clang-format in commit
      85510893.
      
      * globals.mk (ASTYLERC, indent): Delete variables.
      (indent): Delete target.
      
      Change-Id: I138f887a5845ff24e12c5c8ece26e30d4cfc7616
      0f0bb5d8
    • Maxim Cournoyer's avatar
      manager: Rename the 'ringchoice' local variable to 'ringtone'. · 3377a458
      Maxim Cournoyer authored and Amin Bandali's avatar Amin Bandali committed
      * src/manager.cpp (Manager::playRingtone)<ringchoice>: Rename local
      variable to...
      <ringtone> ... this.
      
      Change-Id: Ia94ead6dfa070a5c18d3e267e00d8895f38e5b09
      3377a458
    • Maxim Cournoyer's avatar
      account: Make the default ringtone path portable. · e23a8867
      Maxim Cournoyer authored and Amin Bandali's avatar Amin Bandali committed
      Before this change, the default ringtone path would be for example set
      to "/data/data/cx.ring/files/ringtones/default.opus" on Android;
      migrating the account to GNU/Linux would cause the ringtone to not be
      found.  The change leverages existing code that searches for a base
      file name in a JAMI_DATADIR-prefixed location.
      
      * globals.mk: Set JAMI_DATADIR from the environment if it's defined.
      * src/account.cpp (DEFAULT_RINGTONE_PATH): Universally set to
      "default.opus";
      * src/manager.cpp: Add a definition check for the JAMI_DATADIR macro.
      (Manager::playRingtone): Go through the ringtone path resolution
      scheme on all platforms.  Some platforms will need to define the
      JAMI_DATADIR macro correctly for this to work; for example the
      libjami build on Android should have the JAMI_DATADIR macro set to
      "/data/data/cx.ring/files" for this to work correctly.
      
      Accompanying client-android change:
      https://review.jami.net/c/jami-client-android/+/21148
      
      
      
      Co-authored-by: default avatarAmin Bandali <amin.bandali@savoirfairelinux.com>
      Change-Id: Ia408a8db263af91c2734f61aa38c4ed717605359
      e23a8867
  8. Feb 24, 2022
  9. Feb 19, 2022
  10. Feb 18, 2022
  11. Feb 15, 2022
    • Sébastien Blin's avatar
      swarm: verify all certificates changes · 53cf11bd
      Sébastien Blin authored
      In some cases, a user in the swarm can update its certificates.
      However, the new certificate MUST be checked and MUST be signed
      by the account.
      So, this patch validates two scenarios:
      + Check that a fetch error is sent to the client whenever an invalid
      certificate is detected in the original clone
      + Check that a fetch error is sent to the client whenever a
      certificate is replaced during the conversation.
      
      Change-Id: Ieb15fb6444dcf4541f00c511a9f4ba0c64617130
      53cf11bd
    • Sébastien Blin's avatar
      swarm: handle device's expiration · d2d18bde
      Sébastien Blin authored
      If a device expires, a migration will regenerate the device's
      certificate. In this case, the device certificate in swarms must
      be updated.
      So, the idea of this patch is to verify that the current certificate
      in the repository for this device is still correct. If the device or
      the member got invalidated, it tries to replace the current certificate
      (updated via the migration). So that the new commits will still be valid.
      
      Change-Id: I75b19b0edbb5601a758a73a4c4a44678d77295e1
      GitLab: #684
      d2d18bde
  12. Feb 14, 2022
  13. Feb 11, 2022
  14. Feb 09, 2022
    • Sébastien Blin's avatar
      libressl: update hash · 7634487e
      Sébastien Blin authored and Adrien Béraud's avatar Adrien Béraud committed
      The hash changed because the libressl team updated their tool,
      changing the copyright in the tarball
      
      Change-Id: I0fcf3d65d5058a5fdfdc161aa427758ca20e9a2f
      7634487e
  15. Feb 07, 2022
  16. Feb 04, 2022
    • Sébastien Blin's avatar
      account_archive: re-work migrating process · 34af9c4a
      Sébastien Blin authored
      When a device is expired, the migration will update the certificate
      chain with the previous key. So, after a migration, the device's id
      must be unchanged.
      However, if a device is revoked, this should trigger a re-generation
      of the device with a new PrivateKey (so generates a new device).
      Add related unit tests.
      
      GitLab: #684 (this is some preparative work)
      Change-Id: I7ff0cff97b7285186539cfadc6e33b620ded5b27
      34af9c4a
  17. Feb 02, 2022
    • Sébastien Blin's avatar
      tests: fix ut_conversation · 57723b8c
      Sébastien Blin authored
      + testSetMessageDisplayed and testSetMessageDisplayedPreference were
      broken because the lastDisplayed behaviour was recently changed to
      support syncing across devices. Update the two related tests. Also,
      avoid to update the lastDisplayed on merge
      + testSyncWithoutPinnedCert was badly written causing some sporadic
      failures.
      
      Change-Id: I364818b4ececb0fa63e87441f55a7da76fe1feb6
      57723b8c
    • Sébastien Blin's avatar
      dbus: add startShmSink · afe8b7c3
      Sébastien Blin authored
      Since the video split, the daemon can manages a lot of Sink clients
      which are generally not used by any client. This introduces a lot
      of wasted computation.
      One of the problems is that every sink client have a SHM memory if
      dbus is enabled and any update generates frames for this SHM memory
      even if the client is not showing them.
      This patch introduces VideoManager::startShmSink, which enable
      or disable transfer and works like VideoManager::registerSinkTarget.
      Thus, a transfer will only be done if the client is explicitly
      asking to transfer frames.
      
      Change-Id: I1d265b7ffcdc37aff9c5f729a146fa26c5d7d4a1
      GitLab: https://git.jami.net/savoirfairelinux/jami-product-backlog/-/issues/9
      afe8b7c3
  18. Jan 28, 2022
    • Olivier Dion's avatar
      test/agent/scenarios: Add bulk calls · e215d54a
      Olivier Dion authored
      Gitlab: #687
      
      Change-Id: Ib21093ab520165f02631aab483c1a86efc31aae7
      e215d54a
    • Olivier Dion's avatar
      test/agent/jami/signal: Add syntax rules for signal handlers · 945c4ce9
      Olivier Dion authored
      Small helpers for signal handling.
      
      `with-signal-handler` is useful for scoping signal handler and
      `with-signal-handler-sync` for signal synchronization.
      
      Change-Id: Idc7696fb273003d526f3a4658e7fb5623c2c5827
      945c4ce9
    • Sébastien Blin's avatar
      swarm: sync read status across devices · 84c7c9de
      Sébastien Blin authored
      Because swarm is a synched history compatible with multi-devices,
      if a message from the swarm is read on one device it should be
      synchronized with other devices as much as possible.
      The idea of this patch is to add lastDisplayed sent in synched
      datas to allow clients to update the read status. However, there
      is several scenarios to take into account, because the history
      can be partially synched across devices.
      
      5 scenarios are supported:
      + if the last displayed sent by other devices is the same as the
      current one, there is nothing to do.
      + if there is no last displayed for the current device, the remote
      displayed message is used.
      + if the remote last displayed is not present in the repo, it means
      that the commit will be fetched later, so cache the result
      + if the remote is already fetched, we check that the local last
      displayed is before in the history to replace it
      + Finally if a message is announced from the same author, it means
      that we need to update the last displayed.
      
      If the last displayed message is updated, AccountMessageStatusChanged
      is triggered for the client.
      
      Doc: https://git.jami.net/savoirfairelinux/jami-project/-/wikis/technical/2.3.%20Swarm
      Change-Id: Iedd29129d72cbeb43499471bdfd492dd4d49dcb6
      84c7c9de
  19. Jan 26, 2022
    • Sébastien Blin's avatar
      jamiaccount: add test for migrations · d1bc9390
      Sébastien Blin authored
      Accounts can see their certificates expire. When it's the case, a
      migration is needed. However, several regressions can happen, because
      this behaviour can be tricky to test correctly. In this patch, a
      test is added to validate that the migration is done whenever the
      certificate expires.
      
      + OpenDHT needs to be bumped in order to be able to change the validity
      period of a certificate.
      + In ArchiveAccountManager, a method is added to change the validity
      of a certificate in the chain.
      + This patch also fixes a crash when a migration occurs directly on
      the archive (info_ was null causing a segfault).
      + Finally, cleanup some signatures unused in JamiAccount.
      
      GitLab: #684 (this is some preparative work)
      Change-Id: I901bc67fd63ce2ab26ded64662f8333d3a0eed50
      Unverified
      d1bc9390
  20. Jan 25, 2022
    • Sébastien Blin's avatar
      conversationrepository: fix isValidUserAtCommit · 9fa8bf16
      Sébastien Blin authored
      The method was bugguy, because the whole point here is to check
      if the conversation contains enough informations at this point to
      validate the user, not to compare with pinned certificate.
      Moreover, a user can sync the history from another device, without
      ever connecting to the original author, so the certificateStore
      will not have the device certificate in this case, so only uses
      from the repository.
      A test is added to reflect this.
      
      Change-Id: I3af5e7769174eedcb54e17181d4530593960c9c9
      9fa8bf16
    • Mohamed Chibani's avatar
      SIP call: re-invite without ice re-negotiation · 70a2a650
      Mohamed Chibani authored and Sébastien Blin's avatar Sébastien Blin committed
      When muting/un-muting the video, a re-invite is performed
      leading to a full media renegotiation and restart,  including
      ICE session if used.
      With these changes, the mute/unmute video will still require
      a re-invite (a new SDP to indicate the new media directions), but
      the ICE session is re-used and only the video is stopped/started
      accordingly.
      The behavior improves the UX by avoiding unnecessary audio disruptions
      and is more compliant with SIP/ICE specs (see RFC-5245 section 9.1.1.1
      for example)
      
      Gitlab: #671
      
      Change-Id: I13caf9a965af1d76e922fe5f6b86d5332b3296d6
      70a2a650
  21. Jan 24, 2022
    • Sébastien Blin's avatar
      misc: remove unused files · 518b4b04
      Sébastien Blin authored
      Major part seems from SFLPhone
      
      Change-Id: Icc557d84acf96b35520a03e998b710fb553c93b1
      518b4b04
    • Sébastien Blin's avatar
      misc: remove shortcuts preferences · a290a6f7
      Sébastien Blin authored
      Unsed by all the clients, since years.
      
      Change-Id: I47654d25a04b9574ddac8a717adec25ba3efaa90
      a290a6f7
    • Sébastien Blin's avatar
      certstore: make TrustStore thread safe · 90a5ea27
      Sébastien Blin authored
      Because multiple threads can access the TrustStore to update/add/rm
      certificates, introduce a mutex to protect the maps.
      
      Because a lot of methods only access the maps in read-only, the
      mutex is mutable. Moreover, because isAllowed will check the whole
      chain, to avoid multiple lock/unlocks, the mutex is a recursive one.
      
      Change-Id: Iec197221e2eefba4a7192f36f1a9a952f2533778
      GitLab: #690
      90a5ea27
  22. Jan 21, 2022
    • Mohamed Chibani's avatar
      conference/auto-answer: fix request media change · 8ca7dd3a
      Mohamed Chibani authored
      In conference and auto-answer mode, if the remote peer requests
      a media change, the remote media was used to configure the local
      media. This is bad, since if the remote muted its audio, it will
      also mute the local audio.
      Now, the existing media will not be modified, and the new media
      will be automatically added if any.
      
      Gitlab: #688
      
      Change-Id: Id5388ed916eaa5755202b4b5b5fad118f0dc9c1e
      8ca7dd3a
  23. Jan 20, 2022
    • Maxim Cournoyer's avatar
      build: Rename PROGSHAREDIR to JAMI_DATADIR. · 754ae6bf
      Maxim Cournoyer authored and Amin Bandali's avatar Amin Bandali committed
      This name matches a common naming convention in build systems.
      
      * compat/msvc/config.h (PROGSHAREDIR): Rename to...
      (JAMI_DATADIR) ... this.
      * globals.mk (-DJAMI_DATADIR): Likewise.
      * meson.build (conf): Likewise.
      * src/account.cpp: Likewise.
      * src/manager.cpp (Manager::playRingtone): Likewise.
      
      Change-Id: I123251f3e420948bc7359ce0a3ac54bddd12977a
      754ae6bf
  24. Jan 19, 2022
    • Sébastien Blin's avatar
      jamiaccount: avoid to block in doUnregister if ERROR_GENERIC · 89b7ffe9
      Sébastien Blin authored
      If the account is incorrectly registered (i.e. the common case
      is that the DHT socket is not correctly initialized),
      setRegistrationState(RegistrationState::ERROR_GENERIC) will be
      called and the dht will not be usable.
      
      Calling doUnregister will cause the daemon to block on
      dht_->shutdown(). Because the account is not ready to be used,
      doUnregister() should do nothing if any error happened during the
      registration.
      
      Also, removes 2 unused states.
      
      Change-Id: I0393786afea8c13506c7c87caf265b09182ea0ae
      89b7ffe9
  25. Jan 14, 2022
  26. Jan 12, 2022
  27. Jan 10, 2022
Loading