aboutsummarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorStaticRocket2021-07-12 21:06:43 -0400
committerGordian Edenhofer2021-07-13 09:35:15 +0200
commit025a49b2517e6ed72666991543e3eb643e5055d4 (patch)
tree93e152a166aced8b2807f94ed1ee8a59fcf9b631
parent209d272f3033340e5e66531cc6a8f85d8936a24d (diff)
downloadaur-025a49b2517e6ed72666991543e3eb643e5055d4.tar.gz
minecraft-server: Add locks to avoid conflicts
-rw-r--r--.SRCINFO2
-rw-r--r--PKGBUILD2
-rwxr-xr-xminecraftd.sh9
3 files changed, 7 insertions, 6 deletions
diff --git a/.SRCINFO b/.SRCINFO
index ba78ca4771c9..eb58203c9a8c 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -32,6 +32,6 @@ pkgbase = minecraft-server
sha512sums = a62c8c04e08dbac0db0aa2eeb505d70f8fd925bd2e427899512ba3ac828d4644e1c43c8d92325c6bc49c8d9ecb40cb5c44bf5957a63980b1e2cf86fdb38a05a7
sha512sums = a74f4e31065b6c6f5c830182de05a8c75a6de6eaac7b3dc26479827646ef20ab872509aac88be613048c97d378711c38612ec7ac92d22134acefd40f6e0a99da
sha512sums = 30e434ba183527da8047b1ffe403a083f1af34dbd229b5871222e9da0004cdf5d4152eaa4b73215befcb1233d08cc757af32ad6b572f4b6d2a623b6f120aa0d9
- sha512sums = 207781b07f5dee266ac4b6cff0dabfe5c34173e07749dd9ed78c07c60c9c67101badaaa591c123aec4dadf1ff943bf0a58be0cff49373c5d19b952b19a0cba90
+ sha512sums = 5c61109ae8c22049091cfbec73e76f3dfc65fa24036fe505d135c71d826fcda975e1cfcb28c5e80c075bfb13e5d8bcaef58b9685af721ed87e37776baf1661ec
pkgname = minecraft-server
diff --git a/PKGBUILD b/PKGBUILD
index 7431043bb3ad..6f3df3b2c222 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -32,7 +32,7 @@ sha512sums=('fe6e48e2cee38224d2c88f04c19afca9c21fddbe6077b5538e0a0581c2f6c4478ec
'a62c8c04e08dbac0db0aa2eeb505d70f8fd925bd2e427899512ba3ac828d4644e1c43c8d92325c6bc49c8d9ecb40cb5c44bf5957a63980b1e2cf86fdb38a05a7'
'a74f4e31065b6c6f5c830182de05a8c75a6de6eaac7b3dc26479827646ef20ab872509aac88be613048c97d378711c38612ec7ac92d22134acefd40f6e0a99da'
'30e434ba183527da8047b1ffe403a083f1af34dbd229b5871222e9da0004cdf5d4152eaa4b73215befcb1233d08cc757af32ad6b572f4b6d2a623b6f120aa0d9'
- '207781b07f5dee266ac4b6cff0dabfe5c34173e07749dd9ed78c07c60c9c67101badaaa591c123aec4dadf1ff943bf0a58be0cff49373c5d19b952b19a0cba90')
+ '5c61109ae8c22049091cfbec73e76f3dfc65fa24036fe505d135c71d826fcda975e1cfcb28c5e80c075bfb13e5d8bcaef58b9685af721ed87e37776baf1661ec')
_game="minecraft"
_server_root="/srv/minecraft"
diff --git a/minecraftd.sh b/minecraftd.sh
index 873a708cfb65..415ca6f8e83d 100755
--- a/minecraftd.sh
+++ b/minecraftd.sh
@@ -68,6 +68,7 @@ fi
# Pipe any given argument to the game server console,
# sleep for $sleep_time and return its output if $return_stdout is set
game_command() {
+ ${SUDO_CMD} tmux -L "${SESSION_NAME}" wait-for -L "command_lock"
if [[ -z "${return_stdout:-}" ]]; then
${SUDO_CMD} tmux -L "${SESSION_NAME}" send-keys -t "${SESSION_NAME}":0.0 "$*" Enter
else
@@ -77,6 +78,7 @@ game_command() {
${SUDO_CMD} tmux -L "${SESSION_NAME}" pipe-pane -t "${SESSION_NAME}":0.0
${SUDO_CMD} cat "${GAME_COMMAND_DUMP}"
fi
+ ${SUDO_CMD} tmux -L "${SESSION_NAME}" wait-for -U "command_lock"
}
# Check whether there are player on the server through list
@@ -119,11 +121,8 @@ idle_server_daemon() {
if socket_has_session "${SESSION_NAME}"; then
# Game server is up and running
- if [[ -n "$(tmux -L "${SESSION_NAME}" list-clients -t "${SESSION_NAME}":0.0 2> /dev/null)" ]]; then
- # An administrator is connected to the console, pause player checking
- echo "An admin is connected to the console. Pause player checking."
# Check for active player
- elif SUDO_CMD="" is_player_online; then
+ if SUDO_CMD="" is_player_online; then
# No player was seen on the server through list
no_player=$(( no_player + CHECK_PLAYER_TIME ))
# Stop the game server if no player was active for at least ${IDLE_IF_TIME}
@@ -418,7 +417,9 @@ server_command() {
# Enter the tmux game session
server_console() {
if socket_has_session "${SESSION_NAME}"; then
+ ${SUDO_CMD} tmux -L "${SESSION_NAME}" wait-for -L "command_lock"
${SUDO_CMD} tmux -L "${SESSION_NAME}" attach -t "${SESSION_NAME}":0.0
+ ${SUDO_CMD} tmux -L "${SESSION_NAME}" wait-for -U "command_lock"
else
echo "There is no ${SESSION_NAME} session to connect to."
fi