|
From: vampire0 <vam...@us...> - 2025-03-30 03:12:08
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "jEdit core".
The branch, master has been updated
via 78e5d38fac53681f82d9000bce85510378bc031b (commit)
via 38a3513f4cf9b245d64148b4dcf1ddfc9c0fe3e0 (commit)
via b0dc655b4f716071b7ac4bd73080f7f8cde19253 (commit)
via bd1a37f73ca6fb8b162878da68606d590c6c6f1e (commit)
via 8a951e9a551af16f9fab3c30566ad0d29f31dfd3 (commit)
via 8c8f7d5333d4e1cd9fbd5615ecf4f311480f6505 (commit)
via 29e2a1fb08b1e781bc1c98f450eb7569922d95d5 (commit)
from 492aff312cfc20fb7c6e056921a5c9b6dbbc9fee (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit: https://sourceforge.net/p/jedit/jEdit/ci/78e5d38fac53681f82d9000bce85510378bc031b/
tree: https://sourceforge.net/p/jedit/jEdit/ci/78e5d38fac53681f82d9000bce85510378bc031b/tree/
commit 78e5d38fac53681f82d9000bce85510378bc031b
Author: Björn Kautler <Bj...@Ka...>
Date: Sun Mar 30 05:03:23 2025 +0200
Improve reliability of the jEdit server protocol
diff --git a/doc/CHANGES.txt b/doc/CHANGES.txt
index 2ff24867a..6b8ed0e4b 100644
--- a/doc/CHANGES.txt
+++ b/doc/CHANGES.txt
@@ -37,6 +37,11 @@ for contributing to this release.
- Fix the server killer in the installer to use the correct settings
directory (Björn Kautler)
+- Improve reliability of the jEdit server protocol; it now does not hang
+ indefinitely anymore when connecting to a non-answering service and does
+ not do nothing anymore when connecting to a wrong-answering service
+ (Björn Kautler)
+
}}}
{{{ Miscellaneous
diff --git a/installer/ServerKiller.java b/installer/ServerKiller.java
index ef4425435..05ea78475 100644
--- a/installer/ServerKiller.java
+++ b/installer/ServerKiller.java
@@ -58,64 +58,133 @@ public class ServerKiller
if(portFile.exists())
{
+ BufferedReader portFileIn = null;
+ DataInputStream in = null;
+ DataOutputStream out = null;
try
{
- BufferedReader in = new BufferedReader(new FileReader(portFile));
- String check = in.readLine();
- if(!check.equals("b"))
+ portFileIn = new BufferedReader(new FileReader(portFile));
+ String protocolVersion = portFileIn.readLine();
+ if(!("b".equals(protocolVersion) || "c".equals(protocolVersion)))
{
System.out.println("Wrong port file format");
return false;
}
-
- int port = Integer.parseInt(in.readLine());
- int key = Integer.parseInt(in.readLine());
-
- Socket socket = new Socket(InetAddress.getByName(null),port);
- DataOutputStream out = new DataOutputStream(
- socket.getOutputStream());
- out.writeInt(key);
-
- // we can't close the socket cleanly, because we want
- // to wait for complete exit, and then it's too late.
- // so the socket is closed when the JVM is shut down.
- String script;
- script = "jEdit.exit(null,true);\n";
- out.writeUTF(script);
+ int port = Integer.parseInt(portFileIn.readLine());
+ int keyFromPortFile = Integer.parseInt(portFileIn.readLine());
+
+ Socket socket = new Socket(InetAddress.getLoopbackAddress(),port);
- // block until its closed
- try
+ in = new DataInputStream(socket.getInputStream());
+
+ boolean correctService;
+ if("b".equals(protocolVersion))
{
- socket.getInputStream().read();
+ // with protocol "b" just assume we are talking to a jEdit server
+ // later protocols should answer with the auth key to make sure
+ // we are connected to a proper jEdit server and not some
+ // service that happens to listen on the port in a stale port file
+ correctService = true;
}
- catch(Exception e)
+ else
{
- //should get an exception !
+ // if the service does not answer at all, timeout after a second
+ socket.setSoTimeout(1000);
+ int keyByServer = in.readInt();
+ if(keyByServer != keyFromPortFile)
+ {
+ System.out.println("The service" +
+ " answering on the server port did not follow" +
+ " the right protocol");
+ correctService = false;
+ }
+ else
+ {
+ correctService = true;
+ }
+ socket.setSoTimeout(0);
}
- in.close();
- out.close();
+ // the listening service did not answer with the expected response
+ // so do not send it further bytes but start a new jEdit instance
+ if(correctService)
+ {
+ out = new DataOutputStream(socket.getOutputStream());
+ out.writeInt(keyFromPortFile);
+
+ // we can't close the socket cleanly, because we want
+ // to wait for complete exit, and then it's too late.
+ // so the socket is closed when the JVM is shut down.
+ String script;
+ script = "jEdit.exit(null,true);\n";
+
+ out.writeUTF(script);
+
+ // block until its closed
+ try
+ {
+ in.read();
+ }
+ catch(Exception e)
+ {
+ //should get an exception !
+ }
+ }
}
catch(FileNotFoundException fnfe)
{
//it exists : we checked that earlier !
+ throw new AssertionError(fnfe);
}
catch(UnknownHostException uhe)
{
//localhost doesn't exist ?
+ throw new AssertionError(uhe);
}
catch(IOException ioe)
{
System.out.println("Exception while trying to connect to existing server:");
- System.out.println(ioe);
+ ioe.printStackTrace(System.out);
System.out.println("Don't worry too much !");
return false; //warn the user
}
+ finally
+ {
+ closeQuietly(portFileIn);
+ closeQuietly(in);
+ closeQuietly(out);
+ }
}
return true;
}
+ private static void closeQuietly(Closeable closeable)
+ {
+ if(closeable != null)
+ {
+ try
+ {
+ if (closeable instanceof Flushable)
+ {
+ ((Flushable)closeable).flush();
+ }
+ }
+ catch (IOException e)
+ {
+ // ignore
+ }
+ try
+ {
+ closeable.close();
+ }
+ catch (IOException e)
+ {
+ //ignore
+ }
+ }
+ }
+
/**
* try to connect to any running server instance and close it.
* exit with an error code on failure, but not if no server was found.
diff --git a/org/gjt/sp/jedit/EditServer.java b/org/gjt/sp/jedit/EditServer.java
index d088b172e..288d08f96 100644
--- a/org/gjt/sp/jedit/EditServer.java
+++ b/org/gjt/sp/jedit/EditServer.java
@@ -82,7 +82,7 @@ public class EditServer extends Thread
// Bind to any port on localhost; accept 2 simultaneous
// connection attempts before rejecting connections
socket = new ServerSocket(0, 2,
- InetAddress.getByName(null));
+ InetAddress.getLoopbackAddress());
authKey = new Random().nextInt(Integer.MAX_VALUE);
int port = socket.getLocalPort();
@@ -90,7 +90,7 @@ public class EditServer extends Thread
try
{
- out.write("b\n");
+ out.write("c\n");
out.write(String.valueOf(port));
out.write("\n");
out.write(String.valueOf(authKey));
@@ -142,10 +142,14 @@ public class EditServer extends Thread
Log.log(Log.MESSAGE,this,client + ": connected");
+ DataOutputStream out = new DataOutputStream(
+ client.getOutputStream());
+ out.writeInt(authKey);
+
DataInputStream in = new DataInputStream(
client.getInputStream());
- handleClient(client, in);
+ handleClient(client, out, in);
}
catch(SocketTimeoutException e)
{
@@ -311,7 +315,7 @@ public class EditServer extends Thread
//}}}
//{{{ handleClient() method
- private void handleClient(final Socket client, DataInputStream in)
+ private void handleClient(final Socket client, DataOutputStream out, DataInputStream in)
throws Exception
{
int key = in.readInt();
@@ -321,6 +325,7 @@ public class EditServer extends Thread
+ " authorization key (got " + key
+ ", expected " + authKey + ")");
in.close();
+ out.close();
client.close();
}
else
diff --git a/org/gjt/sp/jedit/jEdit.java b/org/gjt/sp/jedit/jEdit.java
index 000ad4174..36722f7cb 100644
--- a/org/gjt/sp/jedit/jEdit.java
+++ b/org/gjt/sp/jedit/jEdit.java
@@ -292,45 +292,82 @@ public class jEdit
//{{{ Try connecting to another running jEdit instance
if(portFile != null && new File(portFile).exists())
{
- BufferedReader in = null;
+ BufferedReader portFileIn = null;
+ DataInputStream in = null;
DataOutputStream out = null;
try
{
- in = new BufferedReader(new FileReader(portFile));
- String check = in.readLine();
- if(!"b".equals(check))
+ portFileIn = new BufferedReader(new FileReader(portFile));
+ String protocolVersion = portFileIn.readLine();
+ if(!("b".equals(protocolVersion) || "c".equals(protocolVersion)))
throw new IllegalArgumentException("Wrong port file format");
- int port = parseInt(in.readLine());
- int key = parseInt(in.readLine());
+ int port = parseInt(portFileIn.readLine());
+ int keyFromPortFile = parseInt(portFileIn.readLine());
// socket is closed via BeanShell script below
@SuppressWarnings("resource")
- Socket socket = new Socket(InetAddress.getByName(null),port);
- out = new DataOutputStream(socket.getOutputStream());
- out.writeInt(key);
+ Socket socket = new Socket(InetAddress.getLoopbackAddress(),port);
- String script;
- if(quit)
+ in = new DataInputStream(socket.getInputStream());
+
+ boolean correctService;
+ if("b".equals(protocolVersion))
{
- script = "socket.close();\n"
- + "jEdit.exit(null,true);\n";
+ // with protocol "b" just assume we are talking to a jEdit server
+ // later protocols should answer with the auth key to make sure
+ // we are connected to a proper jEdit server and not some
+ // service that happens to listen on the port in a stale port file
+ correctService = true;
}
else
{
- script = makeServerScript(wait,restore,
- newView,newPlainView,args,
- scriptFile);
+ // if the service does not answer at all, timeout after a second
+ socket.setSoTimeout(1000);
+ int keyByServer = in.readInt();
+ if(keyByServer != keyFromPortFile)
+ {
+ Log.log(Log.MESSAGE,jEdit.class, "The service" +
+ " answering on the server port did not follow" +
+ " the right protocol");
+ correctService = false;
+ }
+ else
+ {
+ correctService = true;
+ }
+ socket.setSoTimeout(0);
}
- out.writeUTF(script);
+ // the listening service did not answer with the expected response
+ // so do not send it further bytes but start a new jEdit instance
+ if(correctService)
+ {
+ out = new DataOutputStream(socket.getOutputStream());
+ out.writeInt(keyFromPortFile);
- Log.log(Log.DEBUG,jEdit.class,"Waiting for server");
+ String script;
+ if(quit)
+ {
+ script = "socket.close();\n"
+ + "jEdit.exit(null,true);\n";
+ }
+ else
+ {
+ script = makeServerScript(wait,restore,
+ newView,newPlainView,args,
+ scriptFile);
+ }
- // block until its closed
- socket.getInputStream().read();
+ out.writeUTF(script);
- System.exit(0);
+ Log.log(Log.DEBUG,jEdit.class,"Waiting for server");
+
+ // block until its closed
+ in.read();
+
+ System.exit(0);
+ }
}
catch(Exception e)
{
@@ -348,6 +385,7 @@ public class jEdit
}
finally
{
+ IOUtilities.closeQuietly(portFileIn);
IOUtilities.closeQuietly(in);
IOUtilities.closeQuietly(out);
}
commit: https://sourceforge.net/p/jedit/jEdit/ci/38a3513f4cf9b245d64148b4dcf1ddfc9c0fe3e0/
tree: https://sourceforge.net/p/jedit/jEdit/ci/38a3513f4cf9b245d64148b4dcf1ddfc9c0fe3e0/tree/
commit 38a3513f4cf9b245d64148b4dcf1ddfc9c0fe3e0
Author: Björn Kautler <Bj...@Ka...>
Date: Sun Mar 30 04:16:45 2025 +0200
Fix the server killer in the installer
diff --git a/doc/CHANGES.txt b/doc/CHANGES.txt
index 67463a98e..2ff24867a 100644
--- a/doc/CHANGES.txt
+++ b/doc/CHANGES.txt
@@ -34,6 +34,9 @@ for contributing to this release.
settings directory, also look in the installation directory for doclets,
and properly handle multiple doclet JARs (Björn Kautler)
+- Fix the server killer in the installer to use the correct settings
+ directory (Björn Kautler)
+
}}}
{{{ Miscellaneous
diff --git a/installer/OperatingSystem.java b/installer/OperatingSystem.java
index 7e301ddff..067392ab4 100644
--- a/installer/OperatingSystem.java
+++ b/installer/OperatingSystem.java
@@ -24,6 +24,10 @@ public abstract class OperatingSystem
{
public abstract String getInstallDirectory(String name, String version);
+ public File getSettingsDirectory() {
+ return new File(System.getProperty("user.home"), ".jedit");
+ }
+
public abstract static class OSTask
{
protected Install installer;
@@ -284,6 +288,14 @@ public abstract class OperatingSystem
return "/Applications/" + name + " " + version;
}
+ public File getSettingsDirectory()
+ {
+ File result = new File(System.getProperty("user.home"), "Library/jEdit");
+ if(result.isDirectory())
+ return result;
+ return super.getSettingsDirectory();
+ }
+
public String getExtraClassPath()
{
return "/System/Library/Java/:";
@@ -307,6 +319,18 @@ public abstract class OperatingSystem
return programDir + "\\" + name + " " + version;
}
+ public File getSettingsDirectory()
+ {
+ String appData = System.getenv("APPDATA");
+ if(appData != null)
+ {
+ File result = new File(appData, "jEdit");
+ if(result.isDirectory())
+ return result;
+ }
+ return super.getSettingsDirectory();
+ }
+
public class JEditLauncherOSTask extends OSTask
{
public JEditLauncherOSTask(Install installer)
diff --git a/installer/ServerKiller.java b/installer/ServerKiller.java
index 5b6cf05bd..ef4425435 100644
--- a/installer/ServerKiller.java
+++ b/installer/ServerKiller.java
@@ -27,6 +27,8 @@ package installer;
import java.io.*;
import java.net.*;
+import static installer.OperatingSystem.getOperatingSystem;
+
/**
* Utility class to check for a running jEdit server,
* and stop it.
@@ -39,7 +41,7 @@ import java.net.*;
*/
public class ServerKiller
{
-
+
/**
* try to contact a running instance of jEdit Server
* and ask it to close.
@@ -48,14 +50,12 @@ public class ServerKiller
*/
public static boolean quitjEditServer()
{
-
+
/* {{{ default server file location */
- String settingsDirectory = System.getProperty("user.home");
- File portFile;
- File f = new File(settingsDirectory);
- portFile = new File(f,".jedit/server");
+ File settingsDirectory = getOperatingSystem().getSettingsDirectory();
+ File portFile = new File(settingsDirectory,"server");
/* }}} */
-
+
if(portFile.exists())
{
try
@@ -115,7 +115,7 @@ public class ServerKiller
}
return true;
}
-
+
/**
* try to connect to any running server instance and close it.
* exit with an error code on failure, but not if no server was found.
@@ -129,5 +129,3 @@ public class ServerKiller
}
}
}
-
-
commit: https://sourceforge.net/p/jedit/jEdit/ci/b0dc655b4f716071b7ac4bd73080f7f8cde19253/
tree: https://sourceforge.net/p/jedit/jEdit/ci/b0dc655b4f716071b7ac4bd73080f7f8cde19253/tree/
commit b0dc655b4f716071b7ac4bd73080f7f8cde19253
Author: Björn Kautler <Bj...@Ka...>
Date: Sun Mar 30 03:54:58 2025 +0200
Some fixes for the Preview_JavaDoc_Of_Current_Buffer.bsh macro
diff --git a/doc/CHANGES.txt b/doc/CHANGES.txt
index e79fec6b8..67463a98e 100644
--- a/doc/CHANGES.txt
+++ b/doc/CHANGES.txt
@@ -30,6 +30,10 @@ for contributing to this release.
- Do not abort edit server on exception, like timeout due to script-kiddie DoS
protection (Björn Kautler)
+- Fix the Preview_JavaDoc_Of_Current_Buffer.bsh macro to use the correct
+ settings directory, also look in the installation directory for doclets,
+ and properly handle multiple doclet JARs (Björn Kautler)
+
}}}
{{{ Miscellaneous
diff --git a/macros/Java/Preview_JavaDoc_Of_Current_Buffer.bsh b/macros/Java/Preview_JavaDoc_Of_Current_Buffer.bsh
index 0a330df09..fa22ac798 100644
--- a/macros/Java/Preview_JavaDoc_Of_Current_Buffer.bsh
+++ b/macros/Java/Preview_JavaDoc_Of_Current_Buffer.bsh
@@ -435,10 +435,11 @@ else
String[] docletClassName = { "", "bp.doclet.Bouvard",
"com.mf.doclet.docbook.DocBookDoclet",
"codeinsight.xmldoclet.XMLDoclet",
- "com.tarsec.javadoc.pdfdoclet.PDFDoclet"};
- String[] docletClassPath = { "", "Bouvard.jar", "dbdoclet.jar",
- "xmldoclet.jar",
- "pdfdoclet.jar:itext.jar:/usr/lib/pkgs" };
+ "com.tarsec.javadoc.pdfdoclet.PDFDoclet" };
+ String[][] docletClassPath = { { "" }, { "Bouvard.jar" }, { "dbdoclet.jar" },
+ { "xmldoclet.jar" },
+ { "pdfdoclet.jar",
+ "itext.jar" + SYSTEM_PATH_SEPERATOR + "/usr/lib/pkgs" } };
String PDFDocletConfigPropertiesFile = "pdfdoclet.config.properties";
// Set the DEFAULT Doclet to the JavaDoclet
String proceed = options[0];
@@ -481,8 +482,7 @@ else
{
// you might need some of the follwing if you want to add some
// commandline parms
- String jedit_userdir=System.getProperty("user.home") +
- SYSTEM_FILE_SEPERATOR +".jedit";
+ String jedit_userdir=jEdit.getSettingsDirectory();
String jedit_homedir=jEdit.getJEditHome();
String currClassPath=System.getProperty("java.class.path");
String java_home=System.getProperty("java.home");
@@ -501,11 +501,25 @@ else
command.append(docletClassName[docletChoice]);
command.append("\" ");
command.append("-docletpath \"");
- command.append(jedit_userdir);
- command.append(SYSTEM_FILE_SEPERATOR);
- command.append("jars");
- command.append(SYSTEM_FILE_SEPERATOR);
- command.append(docletClassPath[docletChoice]);
+ boolean separator = false;
+ for (entry : docletClassPath[docletChoice])
+ {
+ if (separator) {
+ command.append(SYSTEM_PATH_SEPERATOR);
+ }
+ separator = true;
+ command.append(jedit_userdir);
+ command.append(SYSTEM_FILE_SEPERATOR);
+ command.append("jars");
+ command.append(SYSTEM_FILE_SEPERATOR);
+ command.append(entry);
+ command.append(SYSTEM_PATH_SEPERATOR);
+ command.append(jedit_homedir);
+ command.append(SYSTEM_FILE_SEPERATOR);
+ command.append("jars");
+ command.append(SYSTEM_FILE_SEPERATOR);
+ command.append(entry);
+ }
command.append("\" ");
//}}}
@@ -570,7 +584,7 @@ else
}
else
- {
+ {
//{{{ standard doclet parms
if (addWindowTitle)
command.append(windowTitle.toString());
@@ -594,7 +608,7 @@ else
command.append("-d \"");
command.append(outputDir);
command.append("\" ");
-
+
//}}}
}
@@ -686,7 +700,7 @@ System.out.println("************************************************************
retVal = _returnSystemCommand(view, command.toString());
if (retVal.indexOf("error") == -1)
{
-
+
// Build the url for the Viewer
// If you don't want to use the InfoViewer plugin...
// easy, change the implementation in this macros _infoView method
@@ -820,4 +834,3 @@ Macro index data (in DocBook format)
*/
// end Preview_JavaDoc_of_Buffer.bsh
-
commit: https://sourceforge.net/p/jedit/jEdit/ci/bd1a37f73ca6fb8b162878da68606d590c6c6f1e/
tree: https://sourceforge.net/p/jedit/jEdit/ci/bd1a37f73ca6fb8b162878da68606d590c6c6f1e/tree/
commit bd1a37f73ca6fb8b162878da68606d590c6c6f1e
Author: Björn Kautler <Bj...@Ka...>
Date: Sat Mar 29 20:12:24 2025 +0100
Do not abort edit server on exceptions
diff --git a/doc/CHANGES.txt b/doc/CHANGES.txt
index 340d85c88..e79fec6b8 100644
--- a/doc/CHANGES.txt
+++ b/doc/CHANGES.txt
@@ -27,6 +27,9 @@ for contributing to this release.
- Do not abort edit server due to misbehaving client that is not following the
edit server protocol properly (Björn Kautler)
+- Do not abort edit server on exception, like timeout due to script-kiddie DoS
+ protection (Björn Kautler)
+
}}}
{{{ Miscellaneous
diff --git a/org/gjt/sp/jedit/EditServer.java b/org/gjt/sp/jedit/EditServer.java
index 6c02cf778..d088b172e 100644
--- a/org/gjt/sp/jedit/EditServer.java
+++ b/org/gjt/sp/jedit/EditServer.java
@@ -147,11 +147,15 @@ public class EditServer extends Thread
handleClient(client, in);
}
+ catch(SocketTimeoutException e)
+ {
+ if(!abort)
+ Log.log(Log.NOTICE,this,e);
+ }
catch(Exception e)
{
if(!abort)
Log.log(Log.ERROR,this,e);
- abort = true;
}
}
} //}}}
commit: https://sourceforge.net/p/jedit/jEdit/ci/8a951e9a551af16f9fab3c30566ad0d29f31dfd3/
tree: https://sourceforge.net/p/jedit/jEdit/ci/8a951e9a551af16f9fab3c30566ad0d29f31dfd3/tree/
commit 8a951e9a551af16f9fab3c30566ad0d29f31dfd3
Author: Björn Kautler <Bj...@Ka...>
Date: Sat Mar 29 20:04:36 2025 +0100
Do not abort edit server on misbehaving client
diff --git a/doc/CHANGES.txt b/doc/CHANGES.txt
index ad3b276ef..340d85c88 100644
--- a/doc/CHANGES.txt
+++ b/doc/CHANGES.txt
@@ -24,6 +24,9 @@ for contributing to this release.
- Make sure socket is closed and server file deleted on edit server aborting
(Björn Kautler)
+- Do not abort edit server due to misbehaving client that is not following the
+ edit server protocol properly (Björn Kautler)
+
}}}
{{{ Miscellaneous
diff --git a/org/gjt/sp/jedit/EditServer.java b/org/gjt/sp/jedit/EditServer.java
index 7a96d10f9..6c02cf778 100644
--- a/org/gjt/sp/jedit/EditServer.java
+++ b/org/gjt/sp/jedit/EditServer.java
@@ -145,8 +145,7 @@ public class EditServer extends Thread
DataInputStream in = new DataInputStream(
client.getInputStream());
- if(!handleClient(client,in))
- abort = true;
+ handleClient(client, in);
}
catch(Exception e)
{
@@ -308,7 +307,7 @@ public class EditServer extends Thread
//}}}
//{{{ handleClient() method
- private boolean handleClient(final Socket client, DataInputStream in)
+ private void handleClient(final Socket client, DataInputStream in)
throws Exception
{
int key = in.readInt();
@@ -319,8 +318,6 @@ public class EditServer extends Thread
+ ", expected " + authKey + ")");
in.close();
client.close();
-
- return false;
}
else
{
@@ -363,8 +360,6 @@ public class EditServer extends Thread
}
}
});
-
- return true;
}
} //}}}
commit: https://sourceforge.net/p/jedit/jEdit/ci/8c8f7d5333d4e1cd9fbd5615ecf4f311480f6505/
tree: https://sourceforge.net/p/jedit/jEdit/ci/8c8f7d5333d4e1cd9fbd5615ecf4f311480f6505/tree/
commit 8c8f7d5333d4e1cd9fbd5615ecf4f311480f6505
Author: Björn Kautler <Bj...@Ka...>
Date: Sat Mar 29 19:43:52 2025 +0100
Make sure socket is closed and server file deleted on edit server aborting
diff --git a/doc/CHANGES.txt b/doc/CHANGES.txt
index cb50d1684..ad3b276ef 100644
--- a/doc/CHANGES.txt
+++ b/doc/CHANGES.txt
@@ -21,6 +21,9 @@ for contributing to this release.
- fix empty Default Line Separator combobox in EncodingOptionsPane (Alan Ezust)
+- Make sure socket is closed and server file deleted on edit server aborting
+ (Björn Kautler)
+
}}}
{{{ Miscellaneous
diff --git a/org/gjt/sp/jedit/EditServer.java b/org/gjt/sp/jedit/EditServer.java
index 476f8a0ed..7a96d10f9 100644
--- a/org/gjt/sp/jedit/EditServer.java
+++ b/org/gjt/sp/jedit/EditServer.java
@@ -126,7 +126,10 @@ public class EditServer extends Thread
while (true)
{
if(abort)
+ {
+ stopServer();
return;
+ }
try
{
commit: https://sourceforge.net/p/jedit/jEdit/ci/29e2a1fb08b1e781bc1c98f450eb7569922d95d5/
tree: https://sourceforge.net/p/jedit/jEdit/ci/29e2a1fb08b1e781bc1c98f450eb7569922d95d5/tree/
commit 29e2a1fb08b1e781bc1c98f450eb7569922d95d5
Author: Björn Kautler <Bj...@Ka...>
Date: Sat Mar 29 19:56:12 2025 +0100
Fix whitespaces in changelog
diff --git a/doc/CHANGES.txt b/doc/CHANGES.txt
index a145263e9..cb50d1684 100644
--- a/doc/CHANGES.txt
+++ b/doc/CHANGES.txt
@@ -10,11 +10,15 @@ for contributing to this release.
{{{ Bug Fixes
- allow '(re)' glob in edit mode to contain alternative without enclosing
- brackets (Eric Le Lay)
+ brackets (Eric Le Lay)
+
- fixes for GenericGUIUtilities in macros (patch #636, #637, #638, Robert
Schwenn)
+
- fix for SyntaxUtilities in Color_Picker macro (patch #639, Robert Schwenn)
+
- fix Run_Script macro beanshell under windows (patch #641, Robert Schwenn)
+
- fix empty Default Line Separator combobox in EncodingOptionsPane (Alan Ezust)
}}}
-----------------------------------------------------------------------
Summary of changes:
doc/CHANGES.txt | 27 ++++-
installer/OperatingSystem.java | 24 ++++
installer/ServerKiller.java | 139 ++++++++++++++++------
macros/Java/Preview_JavaDoc_Of_Current_Buffer.bsh | 43 ++++---
org/gjt/sp/jedit/EditServer.java | 27 +++--
org/gjt/sp/jedit/jEdit.java | 80 +++++++++----
6 files changed, 257 insertions(+), 83 deletions(-)
hooks/post-receive
--
jEdit core
|