Skip to content

Commit 81a5c81

Browse files
committed
Merge branch 'master' of github.com:Red5/red5-server
2 parents 62ed61f + 5ffcada commit 81a5c81

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

src/main/java/org/red5/server/service/ShutdownServer.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.io.PrintWriter;
1515
import java.io.RandomAccessFile;
1616
import java.net.BindException;
17+
import java.net.InetAddress;
1718
import java.net.ServerSocket;
1819
import java.net.Socket;
1920
import java.nio.file.Files;
@@ -145,16 +146,22 @@ public void start() {
145146
} catch (Exception e) {
146147
log.warn("Exception handling token file", e);
147148
}
149+
final InetAddress loopbackAddr = InetAddress.getLoopbackAddress();
148150
while (!shutdown.get()) {
149-
try (ServerSocket serverSocket = new ServerSocket(port); Socket clientSocket = serverSocket.accept(); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));) {
151+
// server socket on loopback address (127.0.0.1) with given port and a backlog of 8
152+
try (ServerSocket serverSocket = new ServerSocket(port, 8, loopbackAddr); Socket clientSocket = serverSocket.accept(); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));) {
150153
log.info("Connected - local: {} remote: {}", clientSocket.getLocalSocketAddress(), clientSocket.getRemoteSocketAddress());
151-
String inputLine = in.readLine();
152-
if (inputLine != null && token.equals(inputLine)) {
153-
log.info("Shutdown request validated using token");
154-
out.println("Ok");
155-
shutdownOrderly();
154+
if (clientSocket.getRemoteSocketAddress().toString().startsWith(loopbackAddr.toString())) {
155+
String inputLine = in.readLine();
156+
if (inputLine != null && token.equals(inputLine)) {
157+
log.info("Shutdown request validated using token");
158+
out.println("Ok");
159+
shutdownOrderly();
160+
} else {
161+
out.println("Invalid input");
162+
}
156163
} else {
157-
out.println("Bye");
164+
out.println("Invalid requester");
158165
}
159166
} catch (BindException be) {
160167
log.error("Cannot bind to port: {}, ensure no other instances are bound or choose another port", port, be);

0 commit comments

Comments
 (0)