mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-08-11 13:48:37 +02:00
double-checked locking for thread safety in MIME utility initialization
This commit is contained in:
parent
b7815fff33
commit
c5eee8cad9
@ -1301,8 +1301,7 @@ public class EmlToPdf {
|
|||||||
Object attachmentContent = getContent.invoke(part);
|
Object attachmentContent = getContent.invoke(part);
|
||||||
byte[] attachmentData = null;
|
byte[] attachmentData = null;
|
||||||
|
|
||||||
if (attachmentContent instanceof InputStream) {
|
if (attachmentContent instanceof InputStream inputStream) {
|
||||||
InputStream inputStream = (InputStream) attachmentContent;
|
|
||||||
// Enhanced stream handling with EOF protection
|
// Enhanced stream handling with EOF protection
|
||||||
try (InputStream stream = inputStream) {
|
try (InputStream stream = inputStream) {
|
||||||
attachmentData = stream.readAllBytes();
|
attachmentData = stream.readAllBytes();
|
||||||
@ -1891,7 +1890,11 @@ public class EmlToPdf {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!mimeUtilityChecked) {
|
if (!mimeUtilityChecked) {
|
||||||
initializeMimeUtilityDecoding();
|
synchronized (EmlToPdf.class) {
|
||||||
|
if (!mimeUtilityChecked) {
|
||||||
|
initializeMimeUtilityDecoding();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mimeUtilityDecodeTextMethod != null) {
|
if (mimeUtilityDecodeTextMethod != null) {
|
||||||
@ -1904,11 +1907,7 @@ public class EmlToPdf {
|
|||||||
return decodeMimeHeader(headerValue.trim());
|
return decodeMimeHeader(headerValue.trim());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static synchronized void initializeMimeUtilityDecoding() {
|
private static void initializeMimeUtilityDecoding() {
|
||||||
if (mimeUtilityChecked) {
|
|
||||||
return; // Already initialized
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Class<?> mimeUtilityClass = Class.forName("jakarta.mail.internet.MimeUtility");
|
Class<?> mimeUtilityClass = Class.forName("jakarta.mail.internet.MimeUtility");
|
||||||
mimeUtilityDecodeTextMethod = mimeUtilityClass.getMethod("decodeText", String.class);
|
mimeUtilityDecodeTextMethod = mimeUtilityClass.getMethod("decodeText", String.class);
|
||||||
|
Loading…
Reference in New Issue
Block a user