mirror of
https://git.jami.net/savoirfairelinux/jami-daemon.git
synced 2025-08-12 22:09:25 +08:00
2d90977034b76422751ac52f7374f0d21fd27f1b

The UPnP stack now opens and closes ports with an asynchronous mechanic and with callbacks. Every time a mapping request (open or close) is sent, a callback is registered and managed by the context. When the corresponding protocol executes the request and gets an answer, the right callback is found and dispatched to its controller. A timeout of 1 second is implemented on each request. Controllers can now be tracked with a unique Id (a string that represents its location in memory). The IGD class now tracks its current active ports and manages the number of users for each port. The PMPIGD class now operates using a queue of mapping requests. Whenever a request is made to the natpmp protocol, it saves the request to its corresponding list (mapToAdd, mapToRemove or mapToRenew in the PMPIGD class) and notifies the main natpmp thread. The thread then checks if there is any pending map requests in the PMPIGD queue and treats them accordingly. Add Nat-Pmp support for windows. Fixed bug where nat-pmp wouldn't find an IGD on a new interface after a connectivity change. The problem stems from the fact that, for one, the nat-pmp handle didn't get cleared internally once a connectivity change occured. This would cause the nat- pmp library to try and send searches on a socket that was bound on the old gateway. Secondly, if you don't wait for a little period of time, the natpmp library would discover the old IGD on the old interface before the connectivity change modifications were completed. Now we restart the nat-pmp process one second after the connectivity change triggers. Change-Id: I39a9b57e237deaa65eef4464a1838eaa3c5bbb03
COPYRIGHT NOTICE Copyright (C) 2004-2019 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/>. Introduction ------------ GNU Ring is a Voice-over-IP software phone. We want it to be: - user friendly (fast, sleek, easy to learn interface) - professional grade (transfers, holds, optimal audio quality) - compatible with Asterisk (using SIP account) - decentralized call (P2P-DHT) - customizable As the SIP/audio daemon and the user interface are separate processes, it is easy to provide different user interfaces. GNU Ring comes with various graphical user interfaces and even scripts to control the daemon from the shell. GNU Ring is currently used by the support team of Savoir-faire Linux Inc. More information is available on the project homepage: https://www.jami.net/ This source tree contains the daemon application only, DRing, that handles the business logic of GNU Ring. UIs are located in differents repositories. See the Contributing section for more information. Short description of content of source tree ------------------------------------------- - src/ is the core of DRing. - bin/ contains applications main code. - bin/dbus, the D-Bus XML interfaces, and C++ bindings - bin/restcpp, the C++ REST API implemented with Restinio About Savoir-faire Linux ------------------------ Savoir-faire Linux is a consulting company based in Montreal, Quebec. For more information, please check out our website: https://www.savoirfairelinux.com/ How to compile on Linux ----------------------- 1) Compile the dependencies first cd contrib mkdir native cd native ../bootstrap make 2) Then the dring application cd ../../ ./autogen.sh ./configure make make install Done ! More details available here: https://git.jami.net/savoirfairelinux/ring-project/wikis/technical/Build-instructions How to compile on OSX --------------------- # These first steps are only necessary if you don't use a package manager. cd extras/tools ./bootstrap make export PATH=$PATH:/location/of/ring/daemon/extras/tools/build/bin # Or, use your favorite package manager to install the necessary tools (macports or brew). automake, pkg-config, libtool, gettext, yasm # Compile the dependencies cd contrib mkdir native cd native ../bootstrap make -j # Then the daemon cd ../../ ./autogen.sh ./configure --without-dbus --prefix=<install_path> make If you want to link against libringclient and native client easiest way is to add to ./configure: --prefix=<prefix_path> Do a little dance! Common Issues ------------- autopoint not found: When using Homebrew, autopoint is not found even when gettext is installed, because symlinks are not created. Run: 'brew link --force gettext' to fix it. Clang compatibility (developers only) ------------------------------------- It is possible to compile dring with Clang by setting CC and CXX variables to 'clang' and 'clang++' respectively when calling ./configure. Currently it is not possible to use the DBus interface mechanism, and the interaction between daemon and client will not work; for each platform where D-Bus is not available the client should implement all the methods in the *_stub.cpp files. How to compile with the REST API -------------------------------- GNU Ring offers two REST API. One written in C++, and the other written in Cython. Up to this date, only the C++ API is available. The Cython API will soon follow. To compile Ring-daemon with the C++ REST API, follow these two steps : 1) Compile the dependencies cd contrib mkdir native cd native ../bootstrap make 2) Then compile the daemon cd ../../ ./autogen.sh ./configure --without-dbus --with-restcpp make SIP accounts --------------------- You may register an existing SIP account through the account wizard in both clients (KDE and GNOME). By doing this, you will be able to call other accounts known to this server. Contributing to GNU Ring ------------------------ Of course we love patches. And contributions. And spring rolls. Development website / Bug Tracker: - https://git.jami.net/savoirfairelinux/ring-project Repositories are hosted on Gerrit, which we use for code review. It also contains the client subprojects: - https://gerrit-ring.savoirfairelinux.com/#/admin/projects/ Do not hesitate to join us and post comments, suggestions, questions and general feedback on the GNU Ring mailing-list: https://lists.gnu.org/mailman/listinfo/ring IRC (on #freenode): - #ring -- The GNU Ring Team
Description
Languages
C++
85.3%
SWIG
2.6%
Python
2.6%
Makefile
2.1%
CMake
1.7%
Other
5.5%