Commit Graph

8431 Commits

Author SHA1 Message Date
Robert Adam
2a7fcdadbf CI(lgtm): Remove LGTM
Since LGTM does not provide a recent enough cmake version, it can no
longer build our repository without falling back to the old qmake system
that'll be removed in the future.
Thus we no longer require LGTM to run as CI.
2020-08-22 17:17:40 +02:00
Robert Adam
0e6e36d76a
Merge pull request #4430: Fix raceconditions in the client
This PR fixes 2 raceconditions that both occur due to the MainWindow::serverDisconnected being able to trigger while certain client-server communication is still happening (unfinished).

The effects of these are

    Loss of server-specific shortcuts due to them being saved from emory before having been loaded into it in the first place (due to msgServerSync not having been called yet)
    Loss of ChannelListeners due to them being saved before their synchronisation with the server being done (and therefore again not having been loaded into memory yet but being saved from there).
2020-08-21 12:22:19 +02:00
Robert Adam
ba06bb184a FIX(client): Don't delay ChannelListener processing
The processing of ChannelListeners was delayed until the next iteration
of the Qt event loop since it was thought that msgServerSync was running
in another thread. Given that this function already accesses the DB,
this can't be though.

Thus the delay is unnecessary and was therefore removed.
2020-08-21 11:31:44 +02:00
Robert Adam
3a55fb4a66 FIX(client): Racecondition deleting ChannelListeners
As ChannelListeners are only synchronised with the server once
msgServerSync has been received, there is still a racecondition for them
even though we only save them if the ServerSync has happened yet.
The connection could be terminated before the answer of the server for
the request to add the respective listeners reaches the client. In that
case the listeners would be erased by the call to
ChannelListener::saveToDB().

Thus this commit introduces yet another flag indicating whether the
listeners have synchronised with the server yet.
2020-08-21 11:30:26 +02:00
Robert Adam
f2acfb50f4 FIX(client): Racecondition deleting shortcuts
Server-specific shortcuts are read into memory in
MainWindow::msgServerSync and are saved into the DB again in
MainWindow::serverDisconnected.
If however the disconnect function runs before the server
synchronization has finished, the shortcut list in memory is empty and
by writing that into the DB all existing server-specific shortcuts are
lost (overwritten).

This commit adds checks before saving the shortcuts (and
ChannelListeners) so that saving only occurs if the synchronization has
happened before and thus the shortcuts have been loaded in the first
place.
2020-08-21 11:29:30 +02:00
Robert Adam
9b736da76f
Merge pull request #4432: DOCS(man): Add missing options from help messages to man pages
Missing options from the help messages of mumble and murmur have
been added to the respective man pages.
2020-08-21 10:59:49 +02:00
Popkornium18
52d5bd1618 DOCS(man): Add missing options from help messages to man pages
Missing options from the help messages of mumble and murmur have
been added to the respective man pages.
2020-08-20 00:04:29 +02:00
Davide Beatrici
43975f3a87
Merge PR #4429: FIX(client): define and export "MumbleMain" also in debug builds 2020-08-18 08:08:34 +02:00
Davide Beatrici
bee21a18a6 FIX(client): define and export "MumbleMain" also in debug builds
This fixes the loader not being able to load the DLL due to the missing symbol.

Previously, the function was defined and exported only when "QT_NO_DEBUG" was not defined (i.e. release builds).

This was probably the case due to:

- Our old environment not providing debug libraries.
- The DLL + loader idea only making sense when Mumble is installed. See PR #1684 for further info.
2020-08-18 03:54:57 +02:00
Davide Beatrici
b7e8db2ad1
Merge PR #4426: FIX(packaging): Enable mac-script to run multiple times 2020-08-14 22:53:35 +02:00
Robert Adam
32d685517e FIX(packaging): Enable mac-script to run multiple times
Before this commit the MacOS packaging script failed on copying Codecs
if the respective directory already existed (e.g. because the packaging
script has been run before).

Furthermore the script called a function to delete a directory (tree)
on a file. This error never surfaced before because usually when this
script is run, the respective file doesn't exist yet.

Both issues are fixed by this commit. It is now possible to run the
packaging script multiple times consecutively without it erroring on
already existing files.
2020-08-14 22:03:47 +02:00
Robert Adam
18b531b6b4
Merge pull request #4416: CI(azure): Disable environment caching
This feature of AzurePipelines has only been introduced recently.
However it turned out that on average the caching of the environment
takes significantly more time than simply downloading it on every run.
Thus this commit disables environment caching again.
2020-08-14 16:54:07 +02:00
Robert Adam
0a335d00e2
Merge pull request #4423: FIX(client): Compile error without manual plugin
Whe using CONFIG+=no-manual-plugin with the old qmake buildsystem or
-Dmanual-plugin=OFF with the new cmake one, there were compile errors
due to the ManualPlugin being referenced in other files without include
guards.

This commit makes sure that in case the manual plugin is not included,
other code won't reference it either.

Fixes #4422
2020-08-13 21:23:00 +02:00
Robert Adam
a0fa7cc0b1 FIX(client): Compile error without manual plugin
Whe using CONFIG+=no-manual-plugin with the old qmake buildsystem or
-Dmanual-plugin=OFF with the new cmake one, there were compile errors
due to the ManualPlugin being referenced in other files without include
guards.

This commit makes sure that in case the manual plugin is not included,
other code won't reference it either.

Fixes #4422
2020-08-13 20:18:21 +02:00
Robert Adam
f0b8a1683a CI(azure): Disable environment caching
This feature of AzurePipelines has only been introduced recently.
However it turned out that on average the caching of the environment
takes significantly more time than simply downloading it on every run.
Thus this commit disables environment caching again.
2020-08-12 18:26:36 +02:00
Davide Beatrici
83182a771d
Merge PR #4408: FEAT(client): print extended error when QOSRemoveSocketFromFlow() fails 2020-08-12 18:21:22 +02:00
Robert Adam
b11ac8f7c5
Merge pull request #4414: FIX(certificate): Retrieve QSslConfiguration after setting CA
Commit bdb12c6 added a regression for servers built with QT older than version
5.15. After this commit these servers do not server intermediate certificates
anymore. This happens because the QSslConfiguration is retrieved before adding
the CA certificates to the socket and is reinserted into the socket again after
adding the CA certificates, thereby overwriting the CA certificates added in
between.

This commit fixes that by retrieving the QSslConfiguration just after setting
the CA certificates in case an older QT version than 5.15 is used.
2020-08-12 17:21:01 +02:00
MadMaurice
b47e309f31 FIX(certificate): Retrieve QSslConfiguration after setting CA
Commit bdb12c6 added a regression for servers built with QT older than version
5.15. After this commit these servers do not serve intermediate certificates
anymore.  This happens because the QSslConfiguration is retrieved before adding
the CA certificates to the socket and is reinserted into the socket again after
adding the CA certificates, thereby overwriting the CA certificates added in
between.

This commit fixes that by retrieving the QSslConfiguration just after setting
the CA certificates in case an older QT version than 5.15 is used.
2020-08-11 23:06:25 +02:00
Davide Beatrici
54bd01f9e6
Merge PR #4413: FIX(cmake): set CMAKE_WIX_UPGRADE_GUID and generate CMAKE_WIX_PRODUCT_GUID 2020-08-11 22:59:57 +02:00
Davide Beatrici
847bdb7079 FIX(cmake): set CMAKE_WIX_UPGRADE_GUID and generate CMAKE_WIX_PRODUCT_GUID
This commit fixes two issues:

1. The installer ignoring Mumble < 1.4.0 installations. This resulted in two separate entries in the installed programs list and a cluttered installation folder.
2. The installer thinking that the product is already installed even if it's a different build.

The first problem was caused by CMAKE_WIX_UPGRADE_GUID being explicitely set to a wrong value, due to an extra line in the file.

The second problem was caused by CMAKE_WIX_PRODUCT_GUID being explicitely set to a static value due to us misunderstanding the "ProjectGuid" variable in the WiX project we used until 1.4.0.
We thought it referred to the MSI product GUID, but instead it's just the MSBuild project identifier.
Also, CMake's WiX documentation clearly says that the installer will abort if it detects a pre-existing installation that uses the same GUID: https://cmake.org/cmake/help/latest/cpack_gen/wix.html#variable:CPACK_WIX_PRODUCT_GUID
2020-08-11 04:03:16 +02:00
Davide Beatrici
62c4523bc1
Merge PR #4412: FIX(cmake): define "MUMBLE_VERSION_STRING" to short version (e.g. "1.4.0") 2020-08-11 00:32:32 +02:00
Davide Beatrici
2f8d685cca FIX(cmake): define "MUMBLE_VERSION_STRING" to short version (e.g. "1.4.0")
This fixes the version appearing as "0.0.0" in builds produced by CI.

We should probably choose a better name for the two defines. Perhaps "MUMBLE_VERSION_SHORT" and "MUMBLE_VERSION_EXTENDED".
2020-08-10 23:32:21 +02:00
Davide Beatrici
523cebf53e
Merge PR #4411: MAINT(cmake): Enable DBus for the client 2020-08-10 23:15:49 +02:00
Robert Adam
556759213a
Merge pull request #4410 : MAINT(cmake): Only return compilable targets
Without this change it could happen that get_targets returned
non-compilable targets (e.g. install or uninstall targets) and this
could lead to errors when e.g. trying to set compile options on those
targets.
2020-08-10 22:27:06 +02:00
Robert Adam
13ca7fd9e2 MAINT(cmake): Enable DBus for the client
The dbus config option has been respected in the server's CMakeLists.txt
but the client ignored the option. This is corrected by this commit.

Fixes #4409
2020-08-10 21:45:06 +02:00
Robert Adam
e0a27b1e7a MAINT(cmake): Only return compilable targets
Without this change it could happen that get_targets returned
non-compilable targets (e.g. install or uninstall targets) and this
could lead to errors when e.g. trying to set compile options on those
targets.
2020-08-10 20:57:39 +02:00
Davide Beatrici
45e2d2419c FEAT(client): print extended error when QOSRemoveSocketFromFlow() fails
This should help us investigate why a crash happens immediately after the function fails on Windows 10 Insider Build 20185.
2020-08-09 20:28:25 +02:00
Davide Beatrici
e563b1f2a4
Merge PR #4404: CI(azure-pipelines): switch to latest build environment 2020-08-09 20:04:31 +02:00
Robert Adam
b77aefe6fa
Merge pull request #4403: MAINT: Disable warnings for 3rdparty projects
In order to not be spammed with warnings from 3rdparty projects that we
make use of in Mumble, this commit modifies the respective cmake files
in a way that disables warnings for the respective projects.
2020-08-09 17:01:00 +02:00
Robert Adam
884fc40bc5 MAINT: Disable warnings for 3rdparty projects
In order to not be spammed with warnings from 3rdparty projects that we
make use of in Mumble, this commit modifies the respective cmake files
in a way that disables warnings for the respective projects.
2020-08-09 16:10:53 +02:00
Davide Beatrici
02e44601d7 CI(azure-pipelines): switch to latest macOS build environment 2020-08-09 01:25:33 +02:00
Davide Beatrici
57d5b8a246 CI(azure-pipelines): switch to latest Windows x86_64 build environment
The x86 build is already using the latest environment because it was introduced very recently.
2020-08-09 01:23:14 +02:00
Robert Adam
06d0dbb5df
Merge pull request #4337: Transifex translation update
New translation updates available from transifex
https://www.transifex.com/organization/mumble/dashboard/mumble
2020-08-05 09:44:51 +02:00
Robert Adam
a4f789659c
Merge pull request #4369: FEAT(client): Allow specifying config file via commandline switch
This adds the switch -c/--config to the mumble client. If -c is followed by a filename, this file will be read instead of the standard config.
A new config option database= has been added to the 'General' section of the ini file. This can be used to specify a different database which is necessary to run multiple completely separate Mumble instances at the same time.

Additionaly the (undocumented) function to merge another ini file by providing it as a parameter has been removed as it was conflicting with the added functionality.

FIXES #3953
2020-08-04 21:46:10 +02:00
Popkornium18
ee9cc7b63e Translation update
Updating 'mumble_en.ts'...
    Found 1891 source text(s) (4 new and 1887 already existing)
    Removed 2 obsolete entries
2020-08-04 20:39:04 +02:00
Popkornium18
4edae462fa FEAT(client): Allow specifying config file via commandline switch
This adds the switch -c/--config to the mumble client. If -c is
followed by a filename, this file will be read instead of the
standard config. A new config option database= has been added to
the 'General' section of the ini file. This can be used to specify
a different database which is necessary to run multiple completely
separate Mumble instances at the same time.

Additionaly the (undocumented) function to merge another ini file
by providing it as a parameter has been removed as it was
conflicting with the added functionality.

FIXES #3953
2020-08-04 20:38:33 +02:00
Robert Adam
102c55c7a0
Merge pull request #4396: CI(windows): Zip all PDB files
Instead of publishing each and every PDB file separately, we now zip
them together into an archive and publish that. That'll reduce the
amount of published files which should make it easier to find what
you're looking for.
2020-08-04 17:47:53 +02:00
Robert Adam
ec3fcf6139
Merge pull request #4395: CI(azure): Don't overwrite build artifacts
As of now the built x86 files overwrite the x64 ones since the x64
build is usually done first but they both produce files of the same
name.

With this commit the build artifacts for x86 and x64 are separated.
2020-08-04 16:25:24 +02:00
MumbleTransifexBot
1c90b2b020 Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 45 languages
2020-08-04 16:24:03 +02:00
Robert Adam
cbc4dddd4c CI(windows): Zip all PDB files
Instead of publishing each and every PDB file separately, we now zip
them together into an archive and publish that. That'll reduce the
amount of published files which should make it easier to find what
you're looking for.
2020-08-04 15:58:30 +02:00
Robert Adam
dd31b119ae CI(azure): Don't overwrite build artifacts
As of now the built x86 files overwrite the x64 ones since the x64
build is usually done first but they both produce files of the same
name.

With this commit the build artifacts for x86 and x64 are separated.
2020-08-04 15:42:55 +02:00
Robert Adam
ed0a737521
Merge pull request #4394: FIX(client): Discard oversized UDP packets
If a received UDP is greater than what our allocated buffers can hold,
they are discarded as of now. Previously they have been trimmed down but
the untrimmed size was used in following code which could lead to stack
corruption.
2020-08-03 18:09:51 +02:00
Robert Adam
b6fe522ec5
Merge pull request #4392: FIX(server): Packet size issues
This PR fixes 2 issues in the server's code that have something to do with packet sizes:

1. Make sure poslen <= len in order for len - poslen to never get negative (which can cause trouble down the line)
2. Enforce the maximum package size for packets received via UDPTunnel as well
2020-08-03 16:50:35 +02:00
Robert Adam
718a9ce59f FIX(client): Discard oversized UDP packets
If a received UDP is greater than what our allocated buffers can hold,
they are discarded as of now. Previously they have been trimmed down but
the untrimmed size was used in following code which could lead to stack
corruption.
2020-08-03 16:44:11 +02:00
Robert Adam
c82f0c93cf REFAC(client): Use constant instead of magic number
The buffer's size for the received UDP packets were magic numbers in the
code. This was refactored so that this size is now only specified once
by storing it in a constant which is then used where needed.
2020-08-03 16:42:41 +02:00
Davide Beatrici
52d6f384ae
Merge PR #4377: CI(azure-pipelines): add 32 bit Windows build 2020-08-03 01:55:20 +02:00
Robert Adam
8ba0246aad CI(tests): Increase timeout for Windows tests
By default Qt sets a timeout of 5 minutes for each test and fails it if
that time is exceeded. On the new 32bit build however our Diffie-Helman
test needs more time and thus we increase the limit to 10 minutes which
seems to be sufficient.
2020-08-02 20:01:58 +02:00
Robert Adam
79f3c18849 CI(tests): Add --verbose option to ctest
With this option enabled we'll actually be able to see the output of the
tested programs which can give hints as to what went wrong.
2020-08-02 20:01:58 +02:00
Davide Beatrici
c64e748e6f CI(azure-pipelines): add 32 bit Windows build
As with the 64 bit build, it uses a build environment we provide on our website.
2020-08-02 20:01:57 +02:00
Robert Adam
b46b46323e
Merge pull request #4389: CI(installer): Only build a few cultures by default
This should save some time during building the installer which hopefully
helps preventing the Windows CI from exceeding the maximum time.
2020-08-02 17:55:10 +02:00