1200: Share libcurl resources across requests r=def- a=heinrich5991
Use the libcurl-share interface to share DNS cache and connections
between different requests.
If compiled with OpenSSL, libcurl can only be safely used from multiple
threads for OpenSSL >= 1.1.0, but this problem is not newly introduced
by this commit: According to libcurl-thread(3):
>OpenSSL <= 1.0.2 the user must set callbacks.
>
>https://www.openssl.org/docs/man1.0.2/crypto/threads.html#DESCRIPTION
>
>https://curl.haxx.se/libcurl/c/opensslthreadlock.html
Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
1195: Fix votespec on /pause (Fixes#1193) r=heinrich5991 a=ChillerDragon
I also thought about using a `` if (str_find(m_aVoteCommand, "set_team"))`` in front of the pause reset.
But then i thought its ok to unpause the VoteVictim every time.
I didn't test but i could belive that this can cause some unwanted unpause for a player with the id of the last VoteVictim on a server type vote for example. Thats why i also reset the ``m_VoteVictim`` to -1 to avoid this.
Co-authored-by: ChillerDragon <chillerdragon@gmail.com>
https://cdn.discordapp.com/attachments/293493549758939136/461236206131478538/PainWeaponBug.gif
because I'm new to coding it took me 2 hours to find this bug. I spent a while looking at the POWERUP_ARMOR and RemoveNinja() code wondering why it didn't work.
this bug is funny to some players so maybe you don't want to fix it. i wont mind because it was a challange for me to find it
SHA256 was chosen because it is reasonably standard, the file names
don't explode in length (this rules out SHA512) and it is supported by
basically all versions of OpenSSL (this rules out SHA512/256 and SHA3).
The protocol is changed in a backward compatible way: The supporting
server sends the SHA256 corresponding to the map in the `MAP_DETAILS`
message prior to sending the `MAP_CHANGE` message. The client saves the
SHA256 obtained from the `MAP_DETAILS` message until the next
`MAP_CHANGE` message.
For servers not supporting this protocol, the client falls back to
simply opening maps like in the previous scheme.
Remove the `map_version` tool, it is not being used and would have been
a little bit effort to update.
Use the OpenSSL implementation of SHA256 if it is supported, otherwise
fall back to a public domain one.
Fix#1127.
1157: Add a way to call for external moderator help r=Learath2 a=heinrich5991
This is done by HTTP POSTing to a location specified by
`sv_modhelp_url`. We also provide a `src/modhelp/server.py` which can
use theses POSTs to forward them to Discord servers.
The POST contains a JSON object payload, with the keys `"port"` which
contains the server port, `"player_id"` which contains the calling
player's client ID, `"player_name"` which contains the calling player's
nick and `"message"` which is the user-specified message.
Make JSON-escaping function public, add tests and fix bugs uncovered by
these tests.
Supersedes #1129.
1160: Fix warning about incompatible function pointers r=Learath2 a=heinrich5991
This comes at the cost of one allocation per started thread. This should
be okay because we're about to invoke a syscall anyway.
Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
This is done by HTTP POSTing to a location specified by
`sv_modhelp_url`. We also provide a `src/modhelp/server.py` which can
use theses POSTs to forward them to Discord servers.
The POST contains a JSON object payload, with the keys `"port"` which
contains the server port, `"player_id"` which contains the calling
player's client ID, `"player_name"` which contains the calling player's
nick and `"message"` which is the user-specified message.
Make JSON-escaping function public, add tests and fix bugs uncovered by
these tests.
Supersedes #1129.
1154: Rename 'credit' -> 'credits' r=Learath2 a=ChillerDragon
It's named ConCredits and there are many people credited so i guess the plural is fitting better c;
Co-authored-by: ChillerDragon <chillerdragon@gmail.com>
1151: fix veto r=heinrich5991 a=ZombieToad
before if a player entered the game and stayed before start on a server with a clock over 20 mins he would get veto
Co-authored-by: ZombieToad <25847476+zombietoad@users.noreply.github.com>
1118: Add vote_ban rcon command r=heinrich5991 a=ChillerDragon
Works the same as muteid.
Vote banned players aren't allowed to start or participate in votes.
Co-authored-by: ChillerDragon <chillerdragon@gmail.com>
Replace `mem_free` by `free`, and `mem_alloc` by `malloc` or `calloc`
(the latter one being used to allocate a zeroed array of elements,
sometimes, this makes a call to `mem_zero` superfluous).
This results in having to remove `mem_stats` which previously recorded
the number of allocations and their size that the Teeworlds code did
directly.
Remove OOM handling in `src/game/client/components/binds.cpp`.
Remove needless copying in the CSV code in
`src/game/client/components/statboard.cpp`.
`str_utf8_isspace` now returns true if the passed code point renders as
a space, instead of when not.
Add `str_utf8_trim_right`, use this function and
`str_utf8_skip_whitespaces` in the server.
Add tests for the three functions
For speedrunning alone in a team this "Everyone in your locked team was killed because '%s' %s."
is very annoying. So better only print it if more than 1 tee is in the team.
1058: Add /pausevoted and /specvoted r=heinrich5991 a=def-
- Also fix /pause and /spec with name parameter a bit
- Move out common code between pause/spec
1025: Add Teehistorian UUIDs to every record r=heinrich5991 a=Learath2
For statistic collecting purposes, don't merge before updating the SQL Schema.
ALTER TABLE record_race ADD COLUMN GameID VARCHAR(64) AFTER cp25;
ALTER TABLE record_teamrace ADD COLUMN GameID VARCHAR(64) AFTER ID;
947: Add support for extra chunks in teehistorian r=Learath2 a=heinrich5991
This allows to add rarely-used chunks without increasing the file format
version.
948: Remove deprecated multi commands r=Learath2 a=heinrich5991
You now have to use `/mc;` instead of `/` if you want to bind multiple
commands to one key.
The engine now takes `std::shared_ptr<IJob>`, this will ensure the
appropriate lifetime of the given parameters, it also allows for proper
destruction. Remove the now obsolete `IFetcher` interface and `CFetcher`
class.
Also adds some locks to `CUpdater`, previously it didn't have any locks
at all.
teehistorian records all inputs from the players as well as the player
positions in each tick. It stores this info in a highly compressible
output format (I've achived 5x compression using xz or bz2).
```
warning C4291: no matching operator delete found; memory will not be freed if initialization throws an exception
warning C4305: truncation from 'double' to 'float'
warning C4805: unsafe mix of type 'bool' and type 'int' in operation
```
Also annotate `dbg_msg`, `str_format` and `str_timestamp_ex` so that the
compiler can determine whether the format strings are correct.
Fix the compiler warnings generated by these extra warnings -- some of
them were security issues.