Skip to content

About

Mirror of Gerrit Jami Core Library and Daemon

Resources

Stars

169 stars

Watchers

21 watching

Forks

Latest commit

 

History

17,810 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

Jami is a voice-over-IP software phone. Features include:

  • user-friendly (fast, sleek, easy-to-learn interface)
  • professional grade (file/call transfers, hold/resume, optimal audio quality, individual/group calls)
  • compatible with Asterisk (using SIP account)
  • peer-to-peer distributed calls (P2P-DHT)
  • customizable

The SIP/audio daemon and the user interface are separate processes. Different user interfaces and scripts can easily be used to control the daemon. Jami comes with various graphical user interfaces and scripts to control the daemon from the shell.

Jami is currently used by the support team of Savoir-faire Linux Inc.

More information is available on the project homepage:

This source tree contains only the daemon, which handles the business logic of Jami. User interfaces are located in different repositories. See the Contributing section for more information.

Network handover

When both peers support it, an established Jami call can reconnect after its SIP channel closes or its default IP network changes. The daemon opens a new authenticated channel and restarts ICE while retaining the call. Recovery has a 20-second limit; audio or video may pause during that time. Calls with older clients and regular SIP accounts retain their previous behavior.

Handover support is advertised with X-Jami-Call-Handover: 1. The original caller selects the recovery channel and issues a monotonically increasing generation in X-Jami-Handover-Generation. The callee requests recovery with a numbered OPTIONS probe, but does not independently select a competing channel. Numbered recovery probes require exactly one valid generation header; missing, malformed, or duplicate generation headers receive 400. Re-INVITEs carrying a previous generation are rejected with 491 before dialog or SDP processing. Other in-dialog requests are accepted on any channel of the call and ordered by their CSeq, so a delayed request is refused by the dialog and does not move the call. A channel is retired only once the dialog adopts a newer one: the caller when it accepts a probe, the callee when it accepts the caller's recovery offer. A rejected offer leaves the call on its current channel. Retirement is per call and does not close a channel used by another call. Stale SDP and ICE results cannot commit media state for a newer generation.

Queued re-INVITE handling checks that its CSeq still identifies an unanswered incoming transaction before adopting a channel or rejecting the offer. Offers with no usable media receive 488 without changing the active SDP or negotiation generation. Queued SDP completion also checks its originating generation when it runs.

Another network change replaces the connection attempt without extending the original 20-second recovery deadline. A peer returning after that deadline does not resurrect the ended call.

Clients should call libjami::connectivityChanged() to refresh account connectivity and libjami::networkInterfaceChanged() only when the default network or its local IP addresses actually change.

Short description of the contents of the source tree

  • src/ is the core of libjami.
  • bin/ contains application and binding main code.
  • bin/dbus contains the D-Bus XML interfaces, and C++ bindings

About Savoir-faire Linux Inc.

Savoir-faire Linux Inc. is a consulting company based in Montreal, Quebec. For more information, please visit the following website:

Building and installing

For build instructions, required dependencies, and platform-specific notes, see BUILD.md.

Contributing

Of course we love patches. And contributions. And spring rolls.

Development website and issue tracker:

Repositories are hosted on Gerrit, which are used for code review. It also contains the client subprojects:

Join us and post comments, suggestions, questions, and general feedback on the Jami mailing list:

COPYRIGHT NOTICE

Copyright (C) 2004-2026 Savoir-faire Linux Inc.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

About

Mirror of Gerrit Jami Core Library and Daemon

Resources

Stars

169 stars

Watchers

21 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages