Commit Graph

4611 Commits

Author SHA1 Message Date
Mikkel Krautz
aab9cdcce4 Server::sendMessage: encode the source IP of outgoing UDP packets to match the UDP socket's address family.
Murmur uses the saiTcpLocalAddress field of ServerUser to determine
the correct source address of outgoing UDP packets. On some systems,
such as multi-homed setups, this is important for correct datagram
delivery.

The saiTcpLocalAddress field is initialized when the client first
connects. Its value is extracted from QHostAddress, and then
converted to a sockaddr struct via our own HostAddress class's
toSockAddr method.

HostAddress::toSockAddr is implemented such that any IPv4 address
(including IPv4-mapped IPv6 addresses) will always cause a sockaddr
struct belonging to the AF_INET (IPv4) family to be output. Pure IPv6
addresses will be output as an AF_INET6 sockaddr.

The code that this change touches assumed that it could use the
value of saiTcpLocalAddress directly as the source address in UDP
packets.

This is not always the case. On most systems, Murmur will listen on
[::]:64738 by default, and as such, the address of the server's UDP
socket will be in the AF_INET6 family. Attempting to send packets
with a source address in the AF_INET family using that socket will
cause sendmsg() to return EINVAL on some systems, if not all.

The new code for the sendmsg() code path converts the ServerUser's
saiTcpLocalAddress back into a HostAddress, which, internally, is
fully IPv6. If the input address is IPv4, HostAddress will convert
it to an IPv4-mapped IPv6 address.

When the client's UDP socket is of the AF_INET6 family, we can now
trust that the HostAddress, 'tcpha', is either a real IPv6 address,
or an IPv4-mapped IPv6 address. This allows us to use the 'tcpha'
address regardless of the address family of the saiTcpLocalAddress.
We can simply memcpy it in place.

When the UDP socket is of the AF_INET family, we can only set the
source address if the saiTcpLocalAddress is also AF_INET, or if
it is of the AF_INET6 family and its address is an IPv4-mapped IPv6
address. When a pure IPv6 address is encountered in that path, it is
simply dropped.
2013-06-01 02:54:53 +02:00
Zuko
c00b44eefa Minor fix in pl translation 2013-05-11 04:09:35 +02:00
bogie
dab8157fb2 Updated BF3 PA plugin to Endgame DLC(b1147186) 2013-03-28 22:29:23 +01:00
Martin von Gagern
d71b2fd04f Ensure that the MAX macro is always defined.
On some systems, none of the (directly or indirectly) included headers does
provide that macro. First reported in https://bugs.gentoo.org/460524
2013-03-27 22:39:58 +01:00
Mikkel
bc871f6386 murmur.pro: add CONFIG(ermine) for the Ermine packaged build. 2013-03-27 22:38:07 +01:00
Stefan Hacker
deeeb72a9d Swedish translation error (#973) 2013-03-19 20:06:55 +01:00
Mikkel Krautz
b115a29a02 opus-build: build with CONFIG=staticlib on Unix as we do for our bundled Speex library. 2013-02-02 10:30:48 +01:00
Mikkel Krautz
1fa4e82621 ConfigDialogDelegate: return fully standalone NSImage in QIcon_to_AutoreleasedNSImage.
QPixmap::toMacCGImageRef seemingly returns an NSImage that is still backed
by the QPixmap. With semantics like that, our usage doesn't make much sense.

For now, use the private QtGui symbol qt_mac_create_nsimage() to create
a fully standalone NSImage.
2013-01-27 19:46:18 +01:00
Steve Hill
4dcd700227 Positional audio plugin for Borderlands 2 v1.3.1 2013-01-20 20:52:16 +01:00
bogie
fed89ce904 BF3 PA plugin update: fixed one value 2013-01-20 19:22:05 +01:00
Stefan Hacker
f4cc3f041e Fix mumble_ol.dll not being versioned under windows.
* Low impact fix for RC. Directly set VERSION in overlay.pro
* Currently the version is set multiple times
  in different .pro/pri files. This should be refactored to come from
  a single .pri file (similar to /macx/common.pri) used in all locations.
* Should probably use an RC file to be able to set more information
2013-01-20 19:22:05 +01:00
Stefan Hacker
1a9aec9f6c mklic.pl run to update in-client license display
* Nonfunctional change
2013-01-20 19:22:05 +01:00
Mikkel Krautz
c8b6d697f5 osxdist.py: create a tarball in addition to the XIP archive for OS X static Murmur. 2013-01-20 18:47:37 +01:00
Stefan Hacker
8cbf1764f1 Update changelog and LICENSE file.
* Nonfunctional commit
2013-01-15 11:49:20 +01:00
Stefan Hacker
6d67d07e58 Default disable hide in tray also for Windows 8
* Can't use os_win.cpp versioning code as global settings singleton
  is initialized before os_init() routine populates variables.
* For now went with the option with least code impact. This should
  be revisited after release.
2013-01-14 20:37:18 +01:00
Stefan Hacker
8678a0c37e Introduce concept of NULL plugin to retract plugins.
* NULL plugins have a shortname of L"Retracted" which excludes them
  from being listed as a plugin in Mumble >= 1.2.4
* NULL plugins are valid plugins that always return false on trylock
  so Mumble <= 1.2.3 gets behavior close to what recent Mumble has.
* NULL css, dods, tf2 and hl2dm plugins as they have been replaced by link support in the source engine.
2013-01-13 22:37:11 +01:00
Mikkel Krautz
8e790418fe mumble_qt.qrc: remove nl, he, hu. 2013-01-13 14:26:35 +01:00
Mikkel Krautz
8b83aba752 mumble.pro, mumble.qrc: remove unfinished Hungarian translation from release. 2013-01-13 14:19:31 +01:00
Mikkel Krautz
0ddb9224b6 mumble.pro, mumble.qrc: remove unfinished Hebrew translation from release. 2013-01-13 14:17:46 +01:00
Mikkel Krautz
886e8d121b mumble.qrc: also remove NL from here. 2013-01-13 14:14:57 +01:00
Mikkel Krautz
2d1bc7606c mumble.pro: exclude unfinished NL translation. 2013-01-13 14:07:52 +01:00
Mikkel Krautz
cd8e996bb1 mumble_ja.ts: mark as finished. 2013-01-13 14:04:43 +01:00
Svenne33
e530caba3c mumble_sv.ts: update for 1.2.4. 2013-01-13 13:42:30 +01:00
Mikkel Krautz
09d8fa1d50 mumble_da.ts: 3. part licenser -> Tredjepartslicenser. 2013-01-13 13:39:58 +01:00
zapman
d9edcbf8fc Minor fixes for French translation 2013-01-11 16:58:32 +01:00
Stefan Hacker
1253532480 setLiveConf for opusthreshold and channelnestinglimit didn't reset on
empty string (#938)
2013-01-10 18:27:59 +01:00
Mikkel Krautz
acb28e8b3f GlobalShortcutWin: revert 242af40b to restore keyboard suppression.
When our WH_KEYBOARD_LL hook suppressed keypresses, DirectInput couldn't
read them.

Let's revisit this optimization for 1.2.5. We can always refer users
having issues with hook timeouts to the registry hack.
2013-01-08 20:46:29 +01:00
Mikkel Krautz
242af40b6d GlobalShortcutWin: try to make WinHooks do less work.
This change switches GlobalShortcutWin over to a slightly different model
in an attempt to combat the WinHook timeouts users have been reporting.

Previously, the DirectInput poller and the WinHooks event handling lived in
the same high-priority thread, and both of them processed all incoming button
events. Since both of them processed all events and emitted them using
GlobalShortcutEngine's handleButton method, they had to live in the same
thread in order for us to control the order of the signal dispatch.

Having the WinHooks live in the same thread as the DirectInput polling meant
that the hooks could potentially be blocked every 20 ms by the DirectInput
poller's timer event, which wasn't really desirable.

This new model splits up the DirectInput poller and the WinHooks event handling
into two separate, high-priority threads, each with different responsibilities.

The DirectInput poller is now the main source of events. This is where the actual
global shortcut presses are handled. Having DirectInput responsible for all
global shortcut buttonUp and buttonDown events allows us to use the WinHooks
thread *just* for filtering suppressed keys.

This design allows our WinHooks to have their own thread and event loop, meaning
they won't have to fight the DirectInput polling timer. Also, since the WinHooks
now have a more restricted set of tasks, they're able to do less work, hopefully
making it harder to trigger a timeout.
2013-01-07 22:53:28 +01:00
Stefan Hacker
f569e1e12f Fix typo in mklic.pl 2013-01-04 19:36:29 +01:00
Stefan Hacker
086d4a2cce Add back accelerator keys for Cancel in QDialogButtonBox.
* VirtualBox stripped those keys from dialogs that are universally dismissed by ESC. Without those we do
  not get matching translations for those buttons though.
2013-01-04 13:50:18 +01:00
Stefan Hacker
e87028aea9 Integrate MIT licensed 3rd party Qt translations for missing locales.
* Added locales not shipped with Qt (qt_it.ts, qt_nl.ts, qt_tr.ts)
  taken from the VirtualBox (https://www.virtualbox.org/ticket/2018)
* Extended mklic.pl to be able to add guards to only include certain
  3rd party licenses if a define is set during build.
* Made mach_override specific to OSX
* Integrated new translations into the bundled qt translations build.
* A new define USING_BUNDLED_QT_TRANSLATIONS is now set when building
  with bundled translations. It is used to guard the 3rd party license
  entry for the new translations.
* See mumble/qttranslations/LICENSE for more information on the
  licensing of the new translations.
2013-01-04 13:50:07 +01:00
Mikkel Krautz
a691c40d1c Murmur: restore old meaning of -fg on Windows: don't write to the log file. 2013-01-03 00:50:44 +01:00
Mikkel Krautz
268ae8da5d Murmur: remove logfile detach warning on Windows. Detach is a no-op on Windows. 2013-01-03 00:39:00 +01:00
Mikkel Krautz
92206cc551 Various murmur.ini fixes.
* Consistently refer to Mumrur as 'Murmur'.
 * Consistently end comments with a period.
 * Update the comments for logfile and pidfile
   to reflect what actually happens in practice.
2013-01-03 00:34:29 +01:00
Mikkel Krautz
921f6e4174 GlobalShortcut_win: log the user's LowLevelHooksTimeout value 2013-01-02 22:37:50 +01:00
Zuko
d25c0693a4 Fix for Polish translation 2012-12-29 00:07:38 +01:00
bogie
ad1c30afcf Update for BF3 PA plugin
- updated offsets for newest patch(v1089904)
2012-12-28 20:21:11 +01:00
Stefan Hacker
8b74d4bb6c Make analyze config option also apply to release builds 2012-12-27 18:22:29 +01:00
Stefan Hacker
0d825b3879 WASAPINotificationClient singleton initialization wasn't threadsafe.
* Implementation relied on local static variable initialization being
  threadsafe which is not the case before C++11.
* To retain lazy initialization now using boost::call_one() to force
  thread-safe first get()
* This adds a non header dependency to boost::threads for the windows
  build.
2012-12-24 01:55:52 +01:00
Mikkel Krautz
ea221f30ab compiler.pri: add CONFIG=clang-analyzer for the clang-checker slave. 2012-12-22 22:39:07 +01:00
zapman
3fc886133a French and Turkish translation improvements 2012-12-21 17:27:09 +01:00
bogie
14f10e5329 Update bf3 PA plugin
- used more reliable pointer chains
- added some documentation
2012-12-20 20:28:49 +01:00
Stefan Hacker
e9ce44abf9 Make sure we don't accidently add spaces to installer paths 2012-12-18 12:30:40 +01:00
Stefan Hacker
24b6148292 Add ini creation file for windows build 2012-12-18 11:56:43 +01:00
Mikkel Krautz
1eca95274d Add Windows Phone IP over USB Service to the overlay blacklist. 2012-12-15 13:09:23 +01:00
Kissaki
6ad5ea49a0 add RzSynapse.exe to overlay blacklist to prevent invisible hooking 2012-12-15 12:17:32 +01:00
zapman
857b03a826 Fix swapped string in fr and tr translation 2012-12-13 19:49:05 +01:00
Stefan Hacker
305b8833e6 Small fix for French translation. 2012-12-10 16:41:12 +01:00
bogie
9b0ae8ba09 Updated bf3 PA plugin to Aftermath patch 2012-12-10 08:22:45 +01:00
Stefan Hacker
afa21bea8b Add debug output to client-side SQL queries. 2012-12-09 21:02:55 +01:00