savoirfairelinux issueshttps://git.jami.net/groups/savoirfairelinux/-/issues2020-09-18T16:06:05Zhttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/72translation: qt client strings to update - 1st wave2020-09-18T16:06:05ZGuillaume Hellertranslation: qt client strings to update - 1st wave <source>version</source>
<source>Version</source>
<source>The Qt client for Jami. Jami is a secured and distributed communication software.</source>
<source>Jami is a free software for universal communica... <source>version</source>
<source>Version</source>
<source>The Qt client for Jami. Jami is a secured and distributed communication software.</source>
<source>Jami is a free software for universal communication which respects the freedom and privacy of its users.</source>
<source>Credit</source>
<source>Credits</source>
<source>Press to display QR code</source>
<source>Display QR code</source>
<source>Press to toggle to settings page</source>
<source>Open settings</source>
<source>Press to toggle to call page</source>
<source>Close settings</source>
<source>Account Migration Required</source>
<source>Authentication required</source>
<source>This account is malformed. Please enter your password</source>
<source>Your session has expired or been revoked on this device. Please enter your password.</source>
<source>Manager Uri</source>
<source>JAMS server</source>
<source>Migrate</source>
<source>Authenticate</source>
<source>Delete</source>
<source>Delete account</source>
<source>Migrating your Jami account...</source>
<source>In progress...</source>
<source>Migration Failed</source>
<source>Authentication failed</source>
<source>Auto Answer Calls</source>
<source>Automatically answer calls</source>
<source>Enable Custom Ringtone</source>
<source>Enable custom ringtone</source>
<source>Select Custom Ringtone</source>
<source>Select custom ringtone</source>
<source>Voicemail Dial Code</source>
<source>Voicemail dial code</source>
<source>Encrypt Media Streams (SRTP)</source>
<source>Encrypt media streams (SRTP)</source>
<source>Enable SDES(Key Exchange)</source>
<source>Enable SDES key exchange</source>
<source>Can Fallback on RTP</source>
<source>Allow fallback on RTP</source>
<source>Encrypt Negotiation (TLS)</source>
<source>Encrypt negotiation (TLS)</source>
<source>CA Certificate</source>
<source>CA certificate</source>
<source>User Certificate</source>
<source>User certificate</source>
<source>Private Key</source>
<source>Private key</source>
<source>Private Key Password</source>
<source>Private key password</source>
<source>Verify Certificates (Server Side)</source>
<source>Verify certificates for incoming TLS connections</source>
<source>Verify Certificates (Client Side)</source>
<source>Verify server TLS certificates</source>
<source>TLS Connections Require Certificate</source>
<source>Require certificate for incoming TLS connections</source>
<source>TLS Protocol Method</source>
<source>TLS protocol method</source>
<source>Outgoing TLS Server Name</source>
<source>TLS server name</source>
<source>Negotiation Timeout (seconds)</source>
<source>Negotiation timeout (seconds)</source>
<source>Registration Expire Timeout (seconds)</source>
<source>Registration expire timeout (seconds)</source>
<source>Newtwork interface</source>
<source>Network interface</source>
<source>TURN Address</source>
<source>TURN address</source>
<source>TURN Username</source>
<source>TURN username</source>
<source>TURN Password</source>
<source>TURN password</source>
<source>STUN Address</source>
<source>STUN address</source>
<source>Use Custom Address/Port</source>
<source>Use custom address/port</source>
<source>Enable Video</source>
<source>Enable video</source>
<source>Audio RTP Min Port</source>
<source>Audio RTP minimum port</source>
<source>Audio RTP Max Port</source>
<source>Audio RTP maximum port</source>
<source>Video RTP Min Port</source>
<source>Video RTP minimum port</source>
<source>Video RTP Max Port</source>
<source>Video RTP maximum port</source>
<source>Auto Answer Calls</source>
<source>Automatically answer calls</source>
<source>Enable Custom Ringtone</source>
<source>Enable custom ringtone</source>
<source>Select Custom Ringtone</source>
<source>Select custom ringtone</source>
<source>(Experimental) Rendez-vous: turn your account into a conference room</source>
<source>Rendezvous point: turn your account into a meeting point</source>
<source>Proxy Address</source>
<source>Proxy address</source>
<source>CA Certificate</source>
<source>CA certificate</source>
<source>User Certificate</source>
<source>User certificate</source>
<source>Private Key</source>
<source>Private key</source>
<source>Private Key Password</source>
<source>Private key password</source>
<source>Auto Connect On Local Network</source>
----- move to OpenDHT Configuration section----------
<source>Enable local peer discovery. Tooltip: Connect to other DHT nodes advertising on your local network.</source>
<source>TURN Address</source>
<source>TURN address</source>
<source>TURN Username</source>
<source>TURN username</source>
<source>TURN Password</source>
<source>TURN password</source>
<source>STUN Address</source>
<source>STUN address</source>
<source>Enable Video</source>
<source>Enable video</source>
<source>Toggle to display side panel</source>
<source>Back</source>
<source>Audio / Video</source>
<source>Audio & Video Settings</source>
<source>Audio input device selector</source>
<source>Select audio input device</source>
<source>Output Device</source>
<source>Output device</source>
<source>Choose the audio output device</source>
<source>Select audio output device</source>
<source>Ringtone Device</source>
<source>Ringtone device</source>
<source>Choose the ringtone output device</source>
<source>Select ringtone output device</source>
<source>Audio Manager</source>
<source>Audio manager</source>
<source>Video device selector</source>
<source>Select video device</source>
<source>Video device resolution selector</source>
<source>Select video resolution</source>
<source>Fps</source>
<source>Frame per second</source>
<source>Video device fps selector</source>
<source>Select video frame per second (fps)</source>
<source>Export Account Here</source>
<source>Backup account here</source>
<source>This account only exists on this device. If you lost your device or uninstall the application, your account will be deleted. You can backup your account now or later.</source>
<source>Your account only exists on this device. If you lost your device or uninstall the application, your account will be deleted and can not be recovered. You can backup your account now or later.</source>
<source>BACKUP ACCOUNT</source>
<source>Backup account</source>
<source>SKIP</source>
<source>Skip</source>
<source>Add as contact</source>
<source>Reinstate as contact</source>
<source>Press to mute the call</source>
<source>Mute</source>
<source>Press to unmute the call</source>
<source>Unmute</source>
<source>Press to hang up the call</source>
<source>Hang-up</source>
<source>Press to pause the call</source>
<source>Pause</source>
<source>Press to resume the call</source>
<source>Resume</source>
<source>Press to add more contact into conference call</source>
<source>Add participants</source>
<source>Press to toggle open the chatview</source>
<source>Chat</source>
<source>Press to open chat options</source>
<source>More options</source>
<source>Resume call</source>
<source>Resume</source>
<source>Hold call</source>
<source>Hold</source>
<source>Sip Input Panel</source>
<source>Sip input panel</source>
<source>Full screen mode</source>
<source>Full screen</source>
<source>Share entire screen</source>
<source>Share screen</source>
<source>Toggle plugin</source>
<source>View plugin</source>
<source>Enter URL of management server</source>
<source>Enter Jami Account Management Server (JAMS) URL</source>
<source>Jami management server URL</source>
<source>Jami Account Management Server URL</source>
<source>Enter your organization credentials</source>
<source>Enter your JAMS credentials</source>
<source>CONNECT</source>
<source>Connect</source>
<source>BACK</source>
<source>Back</source>
<source>Find or start a conversation</source>
<source>Search a contact or a conversation</source>Ming Rui ZhangAline Gondim SantosMing Rui Zhanghttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/75translation: qt client strings to update - 2nd wave2020-09-18T16:05:58ZGuillaume Hellertranslation: qt client strings to update - 2nd wave <source>Export Account Here</source>
<source>Backup account here</source>
<source>CHOOSE USERNAME</source>
<source>Choose username</source>
<source>BACK</source>
<source>Back</so... <source>Export Account Here</source>
<source>Backup account here</source>
<source>CHOOSE USERNAME</source>
<source>Choose username</source>
<source>BACK</source>
<source>Back</source>
<source>SKIP</source>
<source>Skip</source>
<source>CREATE ACCOUNT</source>
<source>Create account</source>
<source>CREATE SIP ACCOUNT</source>
<source>Create SIP account</source>
<source>BACK</source>
<source>Back</source>
<source>Export Successful</source>
<source>Backup successful</source>
<source>Export Failed</source>
<source>Backup failed</source>
<source>Password Changed Successfully</source>
<source>Password changed successfully</source>
<source>Password Change Failed</source>
<source>Password change failed</source>
<source>Password Set Successfully</source>
<source>Password set successfully</source>
<source>Password Set Failed</source>
<source>Password set failed</source>
<source>Change Password</source>
<source>Change password</source>
<source>Set Password</source>
<source>Set password</source>
<source>Toggle to display side panel</source>
<source>Back</source>
<source>Change the current password</source>
<source>Change current password</source>
<source>Currently no password, press this button to set a password</source>
<source>Set a password</source>
<source>Press this button to export account to a .gz file</source>
<source>Backup account to a .gz file</source>
<source>Press to display or hide advance settings</source>
<source>Display or hide advanced settings</source>
<source>Enable</source>
<source>Enable account</source>
<source>Id</source>
<source>Identifier</source>
<source>Registered name</source>
<source>Username</source>
<source>Type here to register a username</source>
<source>Register a username</source>
<source>Export Account</source>
<source>Backup account</source>
<source>Press this button to delete this account</source>
<source>Delete account</source>
<source>Delete Account</source>
<source>Delete account</source>
<source>Press to link one more device with this account</source>
<source>Link a new device to this account</source>
<source>Link Another Device</source>
<source>Link another device</source>
<source>press to open or hide display of banned contact</source>
<source>Display or hide banned contacts</source>
<source>Toggle to display side panel</source>
<source>Back</source>
<source>Press this button to delete this account</source>
<source>Delete account</source>
<source>Delete Account</source>
<source>Delete account</source>
<source>Do you really want to delete the following account?</source>
<source>Do you really want to delete this account?</source>
<source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
<source>If your account has not been backuped, or added to another device, your account and registered name will be irrevocably lost.</source>
<source>Edit Device Name</source>
<source>Edit device name</source>
<source>Unlink Device From Account</source>
<source>Unlink device from account</source>
<source>Select A Folder For Your Downloads</source>
<source>Select a folder</source>
<source>Select A Folder For Your Recordings</source>
<source>Select a folder</source>
<source>Toggle to display side panel</source>
<source>Back</source>
<source>toggle enable notifications</source>
<source>Enable notifications</source>
<source>toggle keep minimized on close</source>
<source>Keep minimized on close</source>
<source>Keep minimize on close</source>
<source>Keep minimized on close</source>
<source>toggle run application on system startup</source>
<source>Run application on system startup</source>
<source>Run On Startup</source>
<source>Run on startup</source>
<source>Downloads folder</source>
<source>Downloads directory</source>
<source>Press to choose download folder path</source>
<source>Choose download directory</source>
<source>Record preview video for a call</source>
<source>Record call</source>
<source>Beta Install</source>
<source>Install beta version</source>
<source>VALUE </source>
<source>Value</source>
<source>Press to choose record folder path</source>
<source>Select a record directory</source>
<source>Archive(none)</source>
<source>Archive</source>
<source>Open File</source>
<source>Open file</source>
<source>Import your account's archive</source>
<source>Create your account from a backup</source>
<source>You can obtain an archive by clicking on "Export account" in the account settings. This will create a .gz file on your device.</source>
<source>You can obtain an archive by clicking on "Backup account" in the account settings. This will create a .gz file on your device.</source>
<source>CONNECT FROM BACKUP</source>
<source>Restore an account from backup</source>
<source>BACK</source>
<source>Back</source>
<source>Enter your main Jami account password</source>
<source>Enter Jami account password</source>
<source>Enter the PIN from another configured Jami account. Use the "export Jami account" feature to obtain a PIN</source>
<source>Enter the PIN from another configured Jami account. Use the "Link another device" feature to obtain a PIN</source>
<source>CONNECT FROM ANOTHER DEVICE</source>
<source>Create account from an another device</source>
<source>BACK</source>
<source>Back</source>
<source>Find or start a conversation</source>
<source>Find a user or search for a conversation</source>
<source>Focus requests list</source>
<source>Requests list</source>
<source>Focus the previous conversation</source>
<source>Previous conversation</source>
<source>Focus the next conversation</source>
<source>Next conversation</source>
<source>Focus search bar</source>
<source>Search bar</source>
<source>Toggle fullscreen</source>
<source>Fullscreen</source>
<source>Start an video call</source>
<source>Start a video call</source>
<source>Media settings</source>
<source>Media Settings</source>
<source>Toggle general settings</source>
<source>General Settings</source>
<source>Toggle account settings</source>
<source>Account Settings</source>
<source>Open account creation's wizard</source>
<source>Open account creation wizard</source>
<source>Open this window</source>
<source>Open window</source>
<source>This pin and the account password should be entered in your device within 10 minutes.</source>
<source>The PIN and the account password should be entered in your device within 10 minutes.</source>
<source>CLOSE</source>
<source>Close</source>
<source>Set Registered Name</source>
<source>Register a Jami username</source>
<source>Registering Name</source>
<source>Registering name</source>
<source>Hang up</source>
<source>Hang-up</source>
<source>Enter the password of this account</source>
<source>Enter the password</source>
<source>Enter Current Password</source>
<source>Enter current password</source>
<source>Enter New Password</source>
<source>Enter new password</source>
<source>Confirm New Password</source>
<source>Confirm new password</source>
<source>CONFIRM</source>
<source>Confirm</source>
<source>Choose an image to be the avatar</source>
<source>Choose a picture as avatar</source>
<source>Image files</source>
<source>Import avatar from image file</source>
<source> Reset </source>
<source>Reset</source>
<source>Select A Plugin to Install</source>
<source>Select a plugin to install</source>
<source>Install Plugin</source>
<source>Install plugin</source>
<source>Toggle to display side panel</source>
<source>Display side panel</source>
<source>Please choose a file</source>
<source>Please select a file</source>
<source>PreferenceValue</source>
<source>Preference value</source>
<source>Save Profile</source>
<source>Save profile</source>
<source>SKIP</source>
<source>Skip</source>
<source>No Device</source>
<source>No device</source>
<source>Enter this account's password to confirm the removal of this device</source>
<source>Enter the account password to confirm the removal of this device</source>
<source>Okay</source>
<source>OK</source>
<source>Choose A Screen to Share</source>
<source>Select a screen to share</source>
<source>Share Screen</source>
<source>Share screen</source>
<source>CONVERSATIONS</source>
<source>Conversations</source>
<source>INVITATIONS</source>
<source>Invitations</source>
<source>QR Code</source>
<source>QR code</source>
<source>Jami is a free software for universal communication which repects the freedoms and privacy of its user.</source>
<source>Jami is free software for universal communication which respects the freedoms and the privacy of its users.</source>
<source>This is your ID. Copy and share it with your friends</source>
<source>This is your Jami username. Copy and share it with your friends!</source>
<source>CREATE A JAMI ACCOUNT</source>
<source>Create a Jami account</source>
<source>IMPORT FROM ANOTHER DEVICE</source>
<source>Link this device to an existing account</source>
<source>CONNECT FROM BACKUP</source>
<source>Load account from backup</source>
<source>SHOW ADVANCED</source>
<source>Advanced features</source>
<source>Show advanced options</source>
<source>Show advanced features</source>
<source>CONNECT TO MANAGEMENT SERVER</source>
<source>Connect to a JAMS server</source>
<source>Login to account manager</source>
<source>Create account from Jami Account Manager Server (JAMS)</source>
<source>CREATE A SIP ACCOUNT</source>
<source>Add a SIP account</source>
<source>Error when creating your account. Check your credentials</source>
<source>Error while creating your account. Check your credentials.</source>
<source>Export Successful</source>
<source>Export successful</source>
<source>Export Failed</source>
<source>Export failed</source>Aline Gondim SantosAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/70Account switching does not handle call management properly2020-09-18T15:50:43ZAlbert Babí OllerAccount switching does not handle call management properly- Scenario: Start two calls from different accounts.
- Problem: Account switching does not handle the call transition, so one is always kept in progress and the other paused.
- Idea: `setCurrentCall` required when switching to an account...- Scenario: Start two calls from different accounts.
- Problem: Account switching does not handle the call transition, so one is always kept in progress and the other paused.
- Idea: `setCurrentCall` required when switching to an account with a current call.Albert Babí OllerAlbert Babí Ollerhttps://git.jami.net/savoirfairelinux/jami-client-gnome/-/issues/1194Multiple accounts: No notification / answer buttons in incoming calls2020-09-18T15:42:38ZHussein AbdallahMultiple accounts: No notification / answer buttons in incoming callsI have several Jami and SIP accounts enabled. All of them are registered and I can switch between accounts using the drop-down list. When I receive an incoming call on a SIP or a Jami account that is not currently selected in the drop-do...I have several Jami and SIP accounts enabled. All of them are registered and I can switch between accounts using the drop-down list. When I receive an incoming call on a SIP or a Jami account that is not currently selected in the drop-down list, I hear the ring tone, but I don't see any notifications and I don't see the buttons to answer (or reject) the call. I have to:
* switch to the account that is ringing
(I still don't see the answer/reject buttons at this point)
* select the Jami account or the phone number that is calling me in the left pane (contact lists) in order to see the answer/reject buttons
It is very confusing: When I hear the ring tone, I can't know which account is ringing when I have more than one account enabled (typically I have at least one SIP and one Jami account enabled all the time). Even if I find out which account is ringing, it can be difficult to find the contact who is calling me because it is not always the first contact in the list (it could be the 10th contact). Basically it means that there is a high risk that I will miss the call.
Expected behavior: see an incoming call notification no matter which account is selected in the drop-down list.
I don't have this issue when the account that is ringing is already selected in the drop-down list: I see both the incoming call notification and the screen with answer / reject buttons.Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/355[META] Migrate to new LRC2020-09-18T15:26:42ZSébastien Blin[META] Migrate to new LRC+ [x] Add settings model #356
+ [ ] Make unit tests independent from each others #357
+ [x] Remove unused models from clients #358
+ [x] Remove Qt #359
+ [x] Migrate Media to new LRC #394
+ [ ] History settings
+ [ ] Notifications+ [x] Add settings model #356
+ [ ] Make unit tests independent from each others #357
+ [x] Remove unused models from clients #358
+ [x] Remove Qt #359
+ [x] Migrate Media to new LRC #394
+ [ ] History settings
+ [ ] Notificationshttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/425Typing indicator support2020-09-18T15:26:31ZSébastien BlinTyping indicator supportDaemon 7.9.0 supports typing indicators with direct p2p connections, so now, clients can show "... is typing..." and this should be implementedDaemon 7.9.0 supports typing indicators with direct p2p connections, so now, clients can show "... is typing..." and this should be implementedhttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/73Keyboard shortcuts table are broken2020-09-18T14:44:18ZMing Rui ZhangKeyboard shortcuts table are brokenhttps://git.jami.net/savoirfairelinux/jami-client-ios/-/issues/90Stricter SwiftLint rules and automatic fixing when available2020-09-18T14:21:36ZRaphaël BruléStricter SwiftLint rules and automatic fixing when availableSwiftLint is great, but we do not currently use it to it's full potential.
# Autocorrection
SwiftLint supports, via `swiftlint autocorrect`, autocorrection of some trivial lint errors (such as spacing). This command should be run autom...SwiftLint is great, but we do not currently use it to it's full potential.
# Autocorrection
SwiftLint supports, via `swiftlint autocorrect`, autocorrection of some trivial lint errors (such as spacing). This command should be run automatically at some point (e.g. at build time).
# Stricter rules
Here are some (categorized) rules to add:
## Supports autocorrect
- [closure_spacing](https://realm.github.io/SwiftLint/closure_spacing.html)
- [closure_end_indentation](https://realm.github.io/SwiftLint/closure_end_indentation.html)
- [literal_expression_end_indentation](https://realm.github.io/SwiftLint/literal_expression_end_indentation.html)
- [operator_usage_whitespace](https://realm.github.io/SwiftLint/operator_usage_whitespace.html)
- [unused_import](https://realm.github.io/SwiftLint/unused_import.html)
- [explicit_self](https://realm.github.io/SwiftLint/explicit_self.html)
- [modifier_order](https://realm.github.io/SwiftLint/modifier_order.html)
- [toggle_bool](https://realm.github.io/SwiftLint/toggle_bool.html)
#### Rejected
- [sorted_imports](https://realm.github.io/SwiftLint/sorted_imports.html)
- [implicit_return](https://realm.github.io/SwiftLint/implicit_return.html)
## Does not support autocorrect
- [multiline_function_chains](https://realm.github.io/SwiftLint/multiline_function_chains.html)
- [closing_brace_spacing](https://realm.github.io/SwiftLint/closing_brace_spacing.html)
- [closure_body_length](https://realm.github.io/SwiftLint/closure_body_length.html)
- [unused_declaration](https://realm.github.io/SwiftLint/unused_declaration.html)
- [vertical_parameter_alignment_on_call](https://realm.github.io/SwiftLint/vertical_parameter_alignment_on_call.html)
- [collection_alignment](https://realm.github.io/SwiftLint/collection_alignment.html)
- [identical_operands](https://realm.github.io/SwiftLint/identical_operands.html)
- [let_var_whitespace](https://realm.github.io/SwiftLint/let_var_whitespace.html)
- [attributes](https://realm.github.io/SwiftLint/attributes.html)
- [lower_acl_than_parent](https://realm.github.io/SwiftLint/lower_acl_than_parent.html)
- [strict_fileprivate](https://realm.github.io/SwiftLint/strict_fileprivate.html)
- [overridden_super_call](https://realm.github.io/SwiftLint/overridden_super_call.html)
- [unowned_variable_capture](https://realm.github.io/SwiftLint/unowned_variable_capture.html)
#### Rejected
- [indentation_width](https://realm.github.io/SwiftLint/indentation_width.html) (conflicts with alignment rules)
- [multiline_arguments](https://realm.github.io/SwiftLint/multiline_arguments.html)
- [multiline_parameters](https://realm.github.io/SwiftLint/multiline_parameters.html)
- [type_contents_order](https://realm.github.io/SwiftLint/type_contents_order.html)
# Patch strategy
To avoid having an enormous patch that will be impossible to rebase the second someone merges something onto master, this will be the patch strategy:
- Initial patch : `swiftlint autocorrect` implemented, and automatic rules present in .swiftlint.yml (other rules are commented)
- Subsequent patches : gradually uncomment manual rules and implement themKateryna KostiukKateryna Kostiukhttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/71The system tray icon disappears when a system notification pops when closed t...2020-09-17T22:07:05ZAndreas TraczykThe system tray icon disappears when a system notification pops when closed to trayhttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/77Double-click to call on a new contact doesn't navigate to the outgoing call s...2020-09-17T22:01:49ZAndreas TraczykDouble-click to call on a new contact doesn't navigate to the outgoing call screenSwapping back and forth between smart-list items is required to show the call screen.
![image](/uploads/f736eed388b575f1b41e2adedc024857/image.png)Swapping back and forth between smart-list items is required to show the call screen.
![image](/uploads/f736eed388b575f1b41e2adedc024857/image.png)Albert Babí OllerAlbert Babí Ollerhttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/55Application wide binding loops cause crashes when resizing2020-09-17T22:01:22ZAndreas TraczykApplication wide binding loops cause crashes when resizingEventually, the client will crash during resize events.Eventually, the client will crash during resize events.Itération 21https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/56Settings: name registration is broken2020-09-17T22:00:48ZAndreas TraczykSettings: name registration is broken- connections aren't made sometimes
- registration button disappears after a timeout
- spinner icon has empty tooltip
- error icon should be replaced- connections aren't made sometimes
- registration button disappears after a timeout
- spinner icon has empty tooltip
- error icon should be replacedItération 21Ming Rui ZhangMing Rui Zhanghttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/84Fontsize required for MaterialButton qml component and 'Account+' account co...2020-09-17T21:56:56ZAndreas TraczykFontsize required for MaterialButton qml component and 'Account+' account combo box item.https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/66code smell: ClientWrapper wraps wrappers and should be removed2020-09-17T16:18:06ZAndreas Traczykcode smell: ClientWrapper wraps wrappers and should be removedAlso, adapter classes should wrap and provision observables for data like:
- current account id
- selected conversation id
- account list size
- ...
This will remove the need for QML functions currently forcing UI updates.Also, adapter classes should wrap and provision observables for data like:
- current account id
- selected conversation id
- account list size
- ...
This will remove the need for QML functions currently forcing UI updates.Andreas TraczykAndreas Traczykhttps://git.jami.net/savoirfairelinux/jami-client-gnome/-/issues/1198conference - can not maximize participant if invitation is still pending2020-09-17T15:49:58ZGuillaume Hellerconference - can not maximize participant if invitation is still pendingSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-client-android/-/issues/746[Feature Request] Jami for Android TV needs a gallery interface to add a prof...2020-09-17T15:24:13Z[Feature Request] Jami for Android TV needs a gallery interface to add a profile picture from storageThere are currently two options to add a picture profile on Android TV, one is to take a picture with the webcam or adding a picture from file, the former works well but the latter displays an error message at the bottom of the screen sa...There are currently two options to add a picture profile on Android TV, one is to take a picture with the webcam or adding a picture from file, the former works well but the latter displays an error message at the bottom of the screen saying "No application can process this action", there is an attached screenshot about it.
The certified Android TV device I'm using is the Ematic Jetstream with Android 9 Pie.
![Edit_User](/uploads/021fcd12a8150200858845c5128ab75e/Edit_User.png)Adrien BéraudAmirhossein NaghshzanPierre DucheminAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-client-android/-/issues/753Android Media lists have duplicates2020-09-17T15:19:15ZovariAndroid Media lists have duplicatesAccount → Settings → Media
1. Why is `opus` listed twice?<br>
a) Can the labels be improved to indicate the difference? Or<br>
b) Should one of the `opus` options be deleted?
2. Why is `speex 8000` listed twice?<br>
a) Should one of the ...Account → Settings → Media
1. Why is `opus` listed twice?<br>
a) Can the labels be improved to indicate the difference? Or<br>
b) Should one of the `opus` options be deleted?
2. Why is `speex 8000` listed twice?<br>
a) Should one of the `speex 8000` options be deleted?
3. Why is `PCMA` listed twice?<br>
a) Can the labels be improved to indicate the difference? Or<br>
b) Should one of the `PCMA` options be delete?
4. Why is `PCMU` listed twice?<br>
a) Can the labels be improved to indicate the difference? Or<br>
b) Should one of the `PCMU` options be delete?
5. Why is `VP8` listed twice?<br>
a) Can the labels be improved to indicate the difference? Or<br>
b) Should one of the `VP8` options be delete?
6. Why is `G722` listed twice?<br>
a) Can the labels be improved to indicate the difference? Or<br>
b) Should one of the `G722` options be delete?
Thank you
Jami 2020069-01<br>
Android 9Pierre DucheminAdrien BéraudPierre Ducheminhttps://git.jami.net/savoirfairelinux/jami-client-android/-/issues/779TV: malformed / empty Vcard2020-09-17T15:18:11ZPierre DucheminTV: malformed / empty Vcard- Jami version: 20200801-01
- Device model: Mecool KM9Pro Deluxe
- Android version: 10
- What build you are using: client: 3a7ae54734b1dca68b83d1e6612ff8f04fbd180b + daemon: 232e133feff70df013d5137db92b87e8d062d208
## Steps to r...- Jami version: 20200801-01
- Device model: Mecool KM9Pro Deluxe
- Android version: 10
- What build you are using: client: 3a7ae54734b1dca68b83d1e6612ff8f04fbd180b + daemon: 232e133feff70df013d5137db92b87e8d062d208
## Steps to reproduce
- Can you reproduce the bug: at will
- Steps:
1. Start a call, either audio or video from any device to an Android TV device
- Actual result: a malformed Vcard is used
- Expected result: the Vcard is correctly formed (no duplicated property) and is not transmitted/used if empty
## Additional information
```
2020-08-06 09:56:09.137 21564-21590/cx.ring D/AccountService: sendProfile, vcard BEGIN:VCARD
VERSION:2.1
X-PRODID:ez-vcard 0.10.5
X-PRODID:ez-vcard 0.10.5
FN:
UID:
END:VCARD
[...]
2020-08-06 09:56:09.138 21564-21590/cx.ring D/ProfileChunk: Inserting part BEGIN:VCARD
VERSION:2.1
X-PRODID:ez-vcard 0.10.5
X-PRODID:ez-vcard 0.10.5
UID:a2fd2d4e0d99a5cd
END:VCARD
at index 1
[...]
2020-08-06 09:56:09.647 21564-21590/cx.ring D/ProfileChunk: Inserting part BEGIN:VCARD
VERSION:2.1
X-PRODID:ez-vcard 0.10.5
X-PRODID:ez-vcard 0.10.5
UID:a2fd2d4e0d99a5cd
END:VCARD
at index 1
```Pierre DucheminPierre Ducheminhttps://git.jami.net/savoirfairelinux/jami-client-android/-/issues/728Contact status doesn't work correctly on Android mobile and Android TV2020-09-16T18:13:38ZContact status doesn't work correctly on Android mobile and Android TV## Describe your environment
Contacts status from "online" to "offline" doesn't change on Android mobile and Android TV.
Please specify the following:
- Ring version: 2020069-01
- Device model: Ematic Jetstream
- Android version...## Describe your environment
Contacts status from "online" to "offline" doesn't change on Android mobile and Android TV.
Please specify the following:
- Ring version: 2020069-01
- Device model: Ematic Jetstream
- Android version: 9.0
- What build you are using: Google Play Store
## Steps to reproduce
- Steps:
To better understand how I reproduce this bug, I'm using an account on my Windows 10 computer and I'm using a different account on my phone and Android TV device.
1. Open Jami on my phone or Android TV device and I can see the contact from my Windows 10 computer is offline.
2. Open Jami on my computer, the contact status on my phone and Android TV device changes to "online" with the green dot. I could make a call or send a message but it's not mandatory for the next step.
3. Now I close Jami on my Windows 10 computer, after 5 to 6 minutes the contact on my phone and Android TV device changes to "offline".
4. The problem lies if I exit the app on my phone or Android TV device BEFORE I close the app on my computer, the contact status of the Windows 10 computer never changes, it appears always connected and the only way to fix that is to force-stop the app but sometimes doing that doesn't fix the problem either.
5. Additionally, when I exit the app on my Android TV device and switch it to standby mode with the remote control, my contact status doesn't change to offline neither so my contacts always see me as online on their devices when I'm not.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/307heap use-after-free2020-09-16T17:51:39ZSébastien Blinheap use-after-free```
=================================================================
==2366477==ERROR: AddressSanitizer: heap-use-after-free on address 0x6130000b40c8 at pc 0x7f38b551857b bp 0x7f389e31eba0 sp 0x7f389e31eb90
READ of size 8 at 0x6130000b...```
=================================================================
==2366477==ERROR: AddressSanitizer: heap-use-after-free on address 0x6130000b40c8 at pc 0x7f38b551857b bp 0x7f389e31eba0 sp 0x7f389e31eb90
READ of size 8 at 0x6130000b40c8 thread T176
#0 0x7f38b551857a in jami::DhtPeerConnector::Impl::ClientConnector::process()::{lambda(jami::tls::TlsSessionState)#2}::operator()(jami::tls::TlsSessionState) const::{lambda(unsigned long const&, DRing::DataTransferEventCode const&)#2}::operator()(unsigned long const, DRing::DataTransferEventCode const) const /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:475
#1 0x7f38b5523a9a in std::_Function_handler<void (unsigned long const&, DRing::DataTransferEventCode const&), jami::DhtPeerConnector::Impl::ClientConnector::process()::{lambda(jami::tls::TlsSessionState)#2}::operator()(jami::tls::TlsSessionState) const::{lambda(unsigned long const&, DRing::DataTransferEventCode const&)#2}>::_M_invoke(std::_Any_data const&, unsigned long const&, DRing::DataTransferEventCode const&) /usr/include/c++/9/bits/std_function.h:300
#2 0x7f38b4f8ab32 in std::function<void (unsigned long const&, DRing::DataTransferEventCode const&)>::operator()(unsigned long const&, DRing::DataTransferEventCode const&) const /usr/include/c++/9/bits/std_function.h:688
#3 0x7f38b4f7dcbe in jami::SubOutgoingFileTransfer::emit(DRing::DataTransferEventCode) const /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:468
#4 0x7f38b4f7c993 in jami::SubOutgoingFileTransfer::closeAndEmit(DRing::DataTransferEventCode) const /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:400
#5 0x7f38b4f7c908 in jami::SubOutgoingFileTransfer::close() /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:390
#6 0x7f38b4f7e562 in jami::OutgoingFileTransfer::close() /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:573
#7 0x7f38b4f82b62 in jami::DataTransferFacade::close(unsigned long const&) /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:916
#8 0x7f38b54fce1c in operator() /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:820
#9 0x7f38b55075af in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#10 0x7f38b57c4335 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<dht::ThreadPool::run(std::function<void ()>&&)::{lambda()#1}> > >::_M_run() (/home/amarok/Projects/jami/daemon/src/.libs/libring.so.0+0x10a3335)
#11 0x7f38b3ae93d3 (/lib64/libstdc++.so.6+0xd73d3)
#12 0x7f38b41424e1 in start_thread (/lib64/libpthread.so.0+0x94e1)
#13 0x7f38b37ea6c2 in __GI___clone (/lib64/libc.so.6+0x1016c2)
0x6130000b40c8 is located 8 bytes inside of 344-byte region [0x6130000b40c0,0x6130000b4218)
freed by thread T176 here:
#0 0x7f38b6ebf175 in operator delete(void*, unsigned long) (/lib64/libasan.so.5+0x111175)
#1 0x7f38b55262ce in std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector>::operator()(jami::DhtPeerConnector::Impl::ClientConnector*) const /usr/include/c++/9/bits/unique_ptr.h:81
#2 0x7f38b551f6de in std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> >::~unique_ptr() /usr/include/c++/9/bits/unique_ptr.h:292
#3 0x7f38b553c193 in std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >::~pair() /usr/include/c++/9/bits/stl_pair.h:208
#4 0x7f38b553c1b3 in void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::destroy<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >(std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >*) /usr/include/c++/9/ext/new_allocator.h:153
#5 0x7f38b5539de4 in void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > > >::destroy<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >(std::allocator<std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >&, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >*) /usr/include/c++/9/bits/alloc_traits.h:497
#6 0x7f38b553450a in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::_M_destroy_node(std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >*) /usr/include/c++/9/bits/stl_tree.h:642
#7 0x7f38b5529d0c in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::_M_drop_node(std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >*) /usr/include/c++/9/bits/stl_tree.h:650
#8 0x7f38b55369d3 in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::_M_erase_aux(std::_Rb_tree_const_iterator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >) /usr/include/c++/9/bits/stl_tree.h:2511
#9 0x7f38b552fcf5 in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::_M_erase_aux(std::_Rb_tree_const_iterator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::_Rb_tree_const_iterator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >) /usr/include/c++/9/bits/stl_tree.h:2525
#10 0x7f38b552686c in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::erase(std::pair<dht::Hash<20ul>, unsigned long> const&) /usr/include/c++/9/bits/stl_tree.h:2536
#11 0x7f38b551f842 in std::map<std::pair<dht::Hash<20ul>, unsigned long>, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::erase(std::pair<dht::Hash<20ul>, unsigned long> const&) /usr/include/c++/9/bits/stl_map.h:1068
#12 0x7f38b54fcc3b in operator() /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:809
#13 0x7f38b55075af in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#14 0x7f38b57c4335 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<dht::ThreadPool::run(std::function<void ()>&&)::{lambda()#1}> > >::_M_run() (/home/amarok/Projects/jami/daemon/src/.libs/libring.so.0+0x10a3335)
#15 0x7f38b52c0877 in dht::Hash<20ul>::to_c_str() const /home/amarok/Projects/jami/daemon/contrib/x86_64-redhat-linux/include/opendht/infohash.h:367
previously allocated by thread T183 here:
#0 0x7f38b6ebda97 in operator new(unsigned long) (/lib64/libasan.so.5+0x10fa97)
#1 0x7f38b551f5e3 in std::_MakeUniq<jami::DhtPeerConnector::Impl::ClientConnector>::__single_object std::make_unique<jami::DhtPeerConnector::Impl::ClientConnector, jami::DhtPeerConnector::Impl&, unsigned long const&, dht::Hash<20ul> const&, std::shared_ptr<dht::crypto::Certificate> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (jami::PeerConnection*)> const&>(jami::DhtPeerConnector::Impl&, unsigned long const&, dht::Hash<20ul> const&, std::shared_ptr<dht::crypto::Certificate> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (jami::PeerConnection*)> const&) /usr/include/c++/9/bits/unique_ptr.h:857
#2 0x7f38b54fc8c1 in jami::DhtPeerConnector::Impl::onAddDevice(dht::Hash<20ul> const&, unsigned long const&, std::shared_ptr<dht::crypto::Certificate> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (jami::PeerConnection*)> const&) /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:788
#3 0x7f38b54ffd9c in operator() /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:1016
#4 0x7f38b5508d45 in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#5 0x7f38b559288c in std::function<void (std::shared_ptr<dht::crypto::Certificate> const&)>::operator()(std::shared_ptr<dht::crypto::Certificate> const&) const /usr/include/c++/9/bits/std_function.h:688
#6 0x7f38b558250e in jami::AccountManager::findCertificate(dht::Hash<20ul> const&, std::function<void (std::shared_ptr<dht::crypto::Certificate> const&)>&&) /home/amarok/Projects/jami/daemon/src/jamidht/account_manager.cpp:430
#7 0x7f38b537dd77 in jami::JamiAccount::findCertificate(dht::Hash<20ul> const&, std::function<void (std::shared_ptr<dht::crypto::Certificate> const&)>&&) /home/amarok/Projects/jami/daemon/src/jamidht/jamiaccount.cpp:2586
#8 0x7f38b55007e2 in operator() /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:1013
#9 0x7f38b5508ff5 in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#10 0x7f38b55934ea in std::function<void (dht::Hash<20ul> const&)>::operator()(dht::Hash<20ul> const&) const /usr/include/c++/9/bits/std_function.h:688
#11 0x7f38b5585118 in operator() /home/amarok/Projects/jami/daemon/src/jamidht/account_manager.cpp:559
#12 0x7f38b5588d4c in _M_invoke /usr/include/c++/9/bits/std_function.h:285
#13 0x7f38b5595cc6 in std::function<bool (jami::DeviceAnnouncement&&)>::operator()(jami::DeviceAnnouncement&&) const /usr/include/c++/9/bits/std_function.h:688
#14 0x7f38b559378e in dht::DhtRunner::get<jami::DeviceAnnouncement>(dht::Hash<20ul>, std::function<bool (jami::DeviceAnnouncement&&)>, std::function<void (bool)>)::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&)#1}::operator()(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&) const /home/amarok/Projects/jami/daemon/contrib/x86_64-redhat-linux/include/opendht/dhtrunner.h:112
#15 0x7f38b559a684 in std::_Function_handler<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&), dht::DhtRunner::get<jami::DeviceAnnouncement>(dht::Hash<20ul>, std::function<bool (jami::DeviceAnnouncement&&)>, std::function<void (bool)>)::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&)#1}>::_M_invoke(std::_Any_data const&, std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&) /usr/include/c++/9/bits/std_function.h:285
#16 0x7f38b58788e6 in std::_Function_handler<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&), dht::SecureDht::getCallbackFilter(std::function<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&)> const&, dht::Value::Filter&&)::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&)#1}>::_M_invoke(std::_Any_data const&, std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&) (/home/amarok/Projects/jami/daemon/src/.libs/libring.so.0+0x11578e6)
Thread T176 created by T0 here:
#0 0x7f38b6de8955 in pthread_create (/lib64/libasan.so.5+0x3a955)
#1 0x7f38b3ae9698 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/lib64/libstdc++.so.6+0xd7698)
Thread T183 created by T1 here:
#0 0x7f38b6de8955 in pthread_create (/lib64/libasan.so.5+0x3a955)
#1 0x7f38b3ae9698 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/lib64/libstdc++.so.6+0xd7698)
Thread T1 created by T0 here:
#0 0x7f38b6de8955 in pthread_create (/lib64/libasan.so.5+0x3a955)
#1 0x7f38b3ae9698 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/lib64/libstdc++.so.6+0xd7698)
#2 0x7f38b4fa185c in jami::ScheduledExecutor::ScheduledExecutor() /home/amarok/Projects/jami/daemon/src/scheduled_executor.cpp:29
#3 0x7f38b4e2225e in jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&) /home/amarok/Projects/jami/daemon/src/manager.cpp:443
#4 0x7f38b4e253d7 in jami::Manager::Manager() /home/amarok/Projects/jami/daemon/src/manager.cpp:720
#5 0x7f38b4e251a3 in jami::Manager::instance() /home/amarok/Projects/jami/daemon/src/manager.cpp:695
#6 0x7f38b4f399c0 in DRing::init(DRing::InitFlag) /home/amarok/Projects/jami/daemon/src/ring_api.cpp:57
#7 0x44c5e3 in DBusClient::initLibrary(int) /home/amarok/Projects/jami/daemon/bin/dbus/dbusclient.cpp:245
#8 0x441104 in DBusClient::DBusClient(int, bool) /home/amarok/Projects/jami/daemon/bin/dbus/dbusclient.cpp:108
#9 0x440895 in void __gnu_cxx::new_allocator<DBusClient>::construct<DBusClient, int&, bool&>(DBusClient*, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x440895)
#10 0x440675 in void std::allocator_traits<std::allocator<DBusClient> >::construct<DBusClient, int&, bool&>(std::allocator<DBusClient>&, DBusClient*, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x440675)
#11 0x44030c in std::_Sp_counted_ptr_inplace<DBusClient, std::allocator<DBusClient>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<int&, bool&>(std::allocator<DBusClient>, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x44030c)
#12 0x43fda3 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<DBusClient, std::allocator<DBusClient>, int&, bool&>(DBusClient*&, std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43fda3)
#13 0x43f989 in std::__shared_ptr<DBusClient, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<DBusClient>, int&, bool&>(std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43f989)
#14 0x43efd5 in std::shared_ptr<DBusClient>::shared_ptr<std::allocator<DBusClient>, int&, bool&>(std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43efd5)
#15 0x43e6c6 in std::shared_ptr<DBusClient> std::allocate_shared<DBusClient, std::allocator<DBusClient>, int&, bool&>(std::allocator<DBusClient> const&, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43e6c6)
#16 0x43de28 in std::shared_ptr<DBusClient> std::make_shared<DBusClient, int&, bool&>(int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43de28)
#17 0x43cda1 in main /home/amarok/Projects/jami/daemon/bin/main.cpp:218
#18 0x7f38b37101a2 in __libc_start_main (/lib64/libc.so.6+0x271a2)
SUMMARY: AddressSanitizer: heap-use-after-free /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:475 in jami::DhtPeerConnector::Impl::ClientConnector::process()::{lambda(jami::tls::TlsSessionState)#2}::operator()(jami::tls::TlsSessionState) const::{lambda(unsigned long const&, DRing::DataTransferEventCode const&)#2}::operator()(unsigned long const, DRing::DataTransferEventCode const) const
Shadow bytes around the buggy address:
0x0c268000e7c0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c268000e7d0: fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e7e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e7f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e800: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c268000e810: fa fa fa fa fa fa fa fa fd[fd]fd fd fd fd fd fd
0x0c268000e820: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c268000e830: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c268000e840: fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e850: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e860: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
Shadow gap: cc
==2366477==ABORTING
```Itération 21Sébastien BlinSébastien Blin