| Commit message (Collapse) | Author | Age | Lines |
|\
| |
| | |
Systray icon: Always toggle visibility when clicking & Add "Show/Hide" menu entry
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It's customary for applications embedding themselves in the system tray
to offer a "Show/Hide window" menu entry on right-click, even for those
applications which offer the same functionality via a single left-click.
(Thanks to qBittorrent for the idea of using QMenu::aboutToShow to
update the label of this menu entry.)
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Left-clicking on the system tray icon should always result in toggling
the visibility of the main window; if the icon is visible and clickble,
then the window can always be hidden via --hide, or on startup via the
"Startup hidden in system tray" option. (In the latter case, this
previously resulted in a hidden and inaccessible window, as reported in
issue #121.)
|
|\ \
| | |
| | | |
Fix QML binding loop in TextImageButton (used in incoming call popup)
|
| |/ |
|
|\ \
| | |
| | | |
Respond immediately to a "quit" command while in CLI mode
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Now that we are no longer blocking on Readline calls, we can set up a
self-pipe that will let us break out of the Readline loop upon receiving
a "quit" command on our local socket, thus (finally) fixing issue #143.
(Thanks to https://stackoverflow.com/a/27662212 for the tip!)
Fixes #143
|
| | |
| | |
| | |
| | |
| | | |
By only invoking rl_callback_read_char() when there is actual input on
stdin, we can now avoid blocking on Readline calls.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When using Readline's callback interface, signals are (by default) only
captured within the duration of the rl_callback_read_char() call. It is
therefore expected of the application to capture SIGWINCH on its own,
and notify Readline of the fact.
(While it's possible to change this with rl_persistent_signal_handlers,
some signals, such as SIGHUP, will still only be *processed* during that
call, making it a somewhat unappealing solution. This all could be
alleviated by calling rl_check_signals() periodically, but that function
was only introduced in Readline 8.0, which is far too recent.)
Note that we are using signal(2) and not sigaction(2), depite the
various warnings that come with it, mostly because it's what is already
present in the codebase.
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When Twinkle is running in CLI mode and is sent a "quit" command to its
local socket, it will currently not respond immediately, but rather wait
until the next line has been read from its standard input (issue #143).
This is due to the blocking nature of readline(), which only returns
once a complete line has been read. Switching to Readline's "alternate"
callback interface is the first step in addressing this issue.
(As a bonus, this also fixes a bug where the line pointer returned by
readline() was not freed correctly.)
|
|\ \
| | |
| | | |
Add twinkle-console option --sip-port --rtp-port
|
| |/ |
|
|\ \
| | |
| | | |
Prevent recursive locking of phone_users_mtx in add_phone_user()
|
| |/
| |
| |
| |
| |
| |
| |
| | |
When encountering two users with the same contact name, attempting to
differentiate them using USER_HOST(), a.k.a. get_ip_sip(), would result
in EDEADLK since phone_users_mtx was already locked by add_phone_user().
Closes #88
|
|\ \
| | |
| | | |
resolve nat_public_ip hostname for dyndns to work
|
| |/ |
|
|\ \
| | |
| | | |
Simple fixes for two deadlocks
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
`t_phone::mutex_3way` can be locked twice when hanging up a conference
call:
- `t_phone::cleanup_3way_state()` acquires a lock
- `t_audio_session::stop_3way()` is called
- `t_audio_session::get_peer_3way()` is called
- `t_phone::get_3way_peer_line()` is called
- which acquires another lock
Making that mutex recursive is a simple way to work around this issue.
|
| |/
| |
| |
| |
| | |
A write lock on `lines_mtx` has already been acquired at the beginning
of `end_call()`.
|
|\ \
| | |
| | | |
let gui set MAX_PTIME cutoff 80ms
|
| |/ |
|
| | |
|
| | |
|
| | |
|
|\ \
| | |
| | | |
Add Slovak translation
|
| |/ |
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Since Qt 5.11, generated ui_getprofilename.h no longer includes QHeaderView
which breaks the chain that included qvalidator.h in getprofilename.cpp.
As it feels rather fragile to rely on such indirect includes, let's include
<QRegExpValidator> explicitly in each file using QRegExpValidator class.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
There's a potential ambiguity between ::bind() and std::bind() if
<functional> happens to be included beforehand (as is the case with
libc++).
|
| |
|
|\
| |
| | |
PAI Header option
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When you reject a call, either
A. the forwarding rule for User-Busy kicks in,
like an answering machine or another extension (of a personal secretary or a deputy). Or
B. the caller hears normal ringing first, and then the busy tone.
To allow case A, a SIP user-agent client (UAC) has to return the status User-Busy (486). The same should happen in case B, because the caller shall hear a busy tone on rejection. 486 is mandated for SIP clients in mobile phones by the GSMA. Furthermore, other SIP-client creators give a 486 in that case as well; I tested Acrobits, Atlinks, Counterpath, Gigaset, Grandstream, RTX, Snom, Yealink, and Vtech.
Before this change, twinkle rejected a call with the SIP-Status 603. The class 6xx requires that *all* other registered phones stop to ring. Furthermore, some SIP user-agent servers (UAS) follow RFC 3398 and map a status 603 to the cause-code 21, which is mapped back to status 403 (Forbidden). Cisco and Digium Asterisk do this. For example in Asterisk, after you rejected the call in twinkle, the caller did not get 603 or 486, but 403. However, in case of 403, the original caller is allowed to re-try the call setup. For example, I have a Nokia Symbian/S60 based phone which tries via IPv4 first, then after it received the 403, that phone tries again via IPv6. Consequently, a user of twinkle had to reject the call twice when 603 was returned.
|
| | |
|
|/ |
|
| |
|
|
|
| |
I've updated the German translation file.
|
| |
|
|
|
|
| |
(This is just cut-and-paste, also removing some trailing whitespace.)
|
|
|
|
| |
Fixes #82
|
|\
| |
| | |
Fix two issues with SelectUserForm
|
| | |
|
| | |
|