Mumble is an open-source, low-latency, high quality voice chat software.
Go to file
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
3rdPartyLicenses Integrate MIT licensed 3rd party Qt translations for missing locales. 2013-01-04 13:50:07 +01:00
celt-0.7.0-build Mumble: allow client to use SBCELT for CELT decoding via CONFIG(sbcelt). 2012-08-09 23:53:09 +02:00
celt-0.7.0-src@6c79a9325c Fix qt<4.6 overlay render 2010-01-31 15:25:03 +01:00
celt-0.11.0-build Mumble: build shared CELT libraries, even for CONFIG(static). 2012-07-21 17:22:23 +02:00
celt-0.11.0-src@e3d39fec7c Upgrade to CELT 0.11.1 in-place 2011-02-15 19:39:58 +01:00
doc Fix mumble packet image in documentation 2010-11-15 11:59:42 +01:00
g15helper Fix G15 SDK path 2012-02-18 10:35:08 +01:00
icons Add local-ignore-text-messages option. 2011-10-14 00:42:25 -04:00
installer Positional audio plugin for Borderlands 2 v1.3.1 2013-01-20 20:52:16 +01:00
macx osxdist.py: create a tarball in addition to the XIP archive for OS X static Murmur. 2013-01-20 18:47:37 +01:00
man Remove 1.1.x - no longer maintained 2011-02-20 04:21:34 +01:00
opus-build opus-build: build with CONFIG=staticlib on Unix as we do for our bundled Speex library. 2013-02-02 10:30:48 +01:00
opus-src@d060dd7cbd Opus: switch submodule back to d060dd7c; last commit accidently changed it. 2012-07-22 02:38:43 +02:00
overlay Fix mumble_ol.dll not being versioned under windows. 2013-01-20 19:22:05 +01:00
overlay_gl Fix warnings in overlay_gl 2011-05-15 16:19:07 -07:00
plugins Updated BF3 PA plugin to Endgame DLC(b1147186) 2013-03-28 22:29:23 +01:00
samples Add sound for recording state change notifications 2010-08-25 23:24:37 +02:00
sbcelt-helper-build Mumble: allow client to use SBCELT for CELT decoding via CONFIG(sbcelt). 2012-08-09 23:53:09 +02:00
sbcelt-lib-build Mumble: allow client to use SBCELT for CELT decoding via CONFIG(sbcelt). 2012-08-09 23:53:09 +02:00
sbcelt-src@a2ce9cf9b8 Mumble: allow client to use SBCELT for CELT decoding via CONFIG(sbcelt). 2012-08-09 23:53:09 +02:00
scripts Fix typo in mklic.pl 2013-01-04 19:36:29 +01:00
speex@a6d05eb5ff Don't put unpushed speex reference in the tree. 2009-10-26 23:56:06 +01:00
speexbuild refacs; initialization, var-scope reduction, replace c-style casts, rm unused 2012-10-24 19:24:33 +02:00
src Server::sendMessage: encode the source IP of outgoing UDP packets to match the UDP socket's address family. 2013-06-01 02:54:53 +02:00
.gitignore Add ini creation file for windows build 2012-12-18 11:56:43 +01:00
.gitmodules Mumble: allow client to use SBCELT for CELT decoding via CONFIG(sbcelt). 2012-08-09 23:53:09 +02:00
CHANGES Update changelog and LICENSE file. 2013-01-15 11:49:20 +01:00
compiler.pri Make analyze config option also apply to release builds 2012-12-27 18:22:29 +01:00
Doxyfile Create common utility class for fetching from mumble.info 2011-03-21 23:41:33 -07:00
INSTALL Update INSTALL 2012-09-01 14:58:47 +02:00
LICENSE Update changelog and LICENSE file. 2013-01-15 11:49:20 +01:00
main.pro Mumble: allow client to use SBCELT for CELT decoding via CONFIG(sbcelt). 2012-08-09 23:53:09 +02:00
README OCD. 2012-02-19 14:34:44 +01:00
README.Linux OCD. 2012-02-19 14:34:44 +01:00
README.static.linux Add more newbie friendly READMEs to the static servers. 2012-09-20 23:04:10 +02:00
README.static.osx Add more newbie friendly READMEs to the static servers. 2012-09-20 23:04:10 +02:00
symbols.pri Handle symbol-generation for plugin_bundles on Mac OS X. 2010-02-24 17:26:01 +01:00
winpaths_default.pri More G15 SDK path fixes 2012-02-18 16:23:13 +01:00

         M U M B L E

 A voicechat utility for gamers

      http://mumble.info/

      #mumble on freenode

Mumble is a voicechat program for gamers written on top of Qt and Speex.

There are two modules in Mumble; the client (mumble) and the server
(murmur). The client works on Win32/64, Linux and Mac OS X, while the
server should work on anything Qt can be installed on.

Note that when we say Win32, we mean Windows XP or newer.

Running Mumble
==============

On Windows, after installation, you should have a new Mumble folder in your
Start Menu, from which you can start Mumble.

On Mac OS X, to install Mumble, drag the application from the downloaded
disk image into your /Applications folder.

Once Mumble is launched, you need a server to connect to. Either create your
own or join a friend's.

Running Murmur on Unix-like systems
===================================

Murmur should be run from the command line, so start a shell (command prompt)
and go to wherever you installed Mumble. Run murmur as

murmurd [-supw <password>] [-ini <inifile>] [-fg] [v]

-supw   Set new password for the user SuperUser, which is hardcoded to
        bypass ACLs. Keep this password safe. Until you set a password,
        the SuperUser is disabled. If you use this option, murmur will
        set the password in the database and then exit.

-ini    Use a inifile other than murmur.ini, use this to run several isntances
        of murmur from the same directory. Make sure each instance is using
        a separate database.

-fg     Run in the foreground, logging to standard output.

-v      More verbose logging.

Running Murmur on Mac OS X
==========================

On Mac OS X, Murmur is available inside your Mumble application bundle. If you
copied the Mumble program into your Applications directory, you should be able
to run it by executing:

 /Applications/Mumble.app/Contents/MacOS/murmurd -v -fg

in a Terminal. For more information, please see the 'Running Murmur on Unix-
like sytems' above.

To easily override the default Murmur configuration, a murmur.ini file can be placed in
your user's 'Library/Preferences/Mumble/' directory.

Example configuration files and other scripts can be found inside the Murmur
directory of the Mumble installation disk image.

Running Murmur on Win32
=======================

Doubleclick the Murmur icon to start murmur. There will be a small icon on your
taskbar from which you can view the log.

To set the superuser password, run murmur with the parameters '-supw <password>'.

Bandwidth usage
===============

Mumble will use 10-40 kbit/s outgoing, and the same incoming for each user.
So if there are 10 other users on the server with you, your incoming
bandwidth requirement will be 100-400 kbit/s if they all talk at the same time.