diff --git a/.gitignore b/.gitignore index 5aee481b98..4c14312212 100644 --- a/.gitignore +++ b/.gitignore @@ -704,6 +704,7 @@ packages/app-desktop/utils/customProtocols/registerCustomProtocols.js packages/app-desktop/utils/getAssetPath.js packages/app-desktop/utils/initReact.js packages/app-desktop/utils/initializeCommandService.js +packages/app-desktop/utils/initializeNetworkConnectionAttemptTimeout.js packages/app-desktop/utils/isSafeToOpen.test.js packages/app-desktop/utils/isSafeToOpen.js packages/app-desktop/utils/layout/layoutKeyToLabel.js diff --git a/.ignore.eslint b/.ignore.eslint index 0e2bf3b5d9..ee83862e00 100644 --- a/.ignore.eslint +++ b/.ignore.eslint @@ -730,6 +730,7 @@ packages/app-desktop/utils/customProtocols/registerCustomProtocols.js packages/app-desktop/utils/getAssetPath.js packages/app-desktop/utils/initReact.js packages/app-desktop/utils/initializeCommandService.js +packages/app-desktop/utils/initializeNetworkConnectionAttemptTimeout.js packages/app-desktop/utils/isSafeToOpen.test.js packages/app-desktop/utils/isSafeToOpen.js packages/app-desktop/utils/layout/layoutKeyToLabel.js diff --git a/packages/app-desktop/main-html.ts b/packages/app-desktop/main-html.ts index 8e88586c96..334bf6e027 100644 --- a/packages/app-desktop/main-html.ts +++ b/packages/app-desktop/main-html.ts @@ -38,8 +38,11 @@ import PerformanceLogger from '@joplin/lib/PerformanceLogger'; import * as pdfJs from 'pdfjs-dist'; import { isAppleSilicon } from 'is-apple-silicon'; import restart from './services/restart'; +import initializeNetworkConnectionAttemptTimeout from './utils/initializeNetworkConnectionAttemptTimeout'; require('@sentry/electron/renderer'); +initializeNetworkConnectionAttemptTimeout(); + // Allows components to use React as a global window.React = React; diff --git a/packages/app-desktop/main.ts b/packages/app-desktop/main.ts index 4cb9f9ad05..c7159d4145 100644 --- a/packages/app-desktop/main.ts +++ b/packages/app-desktop/main.ts @@ -13,6 +13,9 @@ const packageInfo = require('./packageInfo.js'); import { isCallbackUrl } from '@joplin/lib/callbackUrlUtils'; import determineBaseAppDirs from '@joplin/lib/determineBaseAppDirs'; import registerCustomProtocols from './utils/customProtocols/registerCustomProtocols'; +import initializeNetworkConnectionAttemptTimeout from './utils/initializeNetworkConnectionAttemptTimeout'; + +initializeNetworkConnectionAttemptTimeout(); // Electron takes the application name from package.json `name` and // displays this in the tray icon toolip and message box titles, however in diff --git a/packages/app-desktop/utils/initializeNetworkConnectionAttemptTimeout.ts b/packages/app-desktop/utils/initializeNetworkConnectionAttemptTimeout.ts new file mode 100644 index 0000000000..7bb98d974b --- /dev/null +++ b/packages/app-desktop/utils/initializeNetworkConnectionAttemptTimeout.ts @@ -0,0 +1,10 @@ +const net = require('net') as typeof import('net') & { + getDefaultAutoSelectFamilyAttemptTimeout: ()=> number; + setDefaultAutoSelectFamilyAttemptTimeout: (value: number)=> void; +}; + +export default () => { + // Prior to Node 26, the default value is 250 ms, which is too low in some situations. Increase the default to match the Node 26 + // default of 500 ms, at least until the app is upgraded to Node 26 + net.setDefaultAutoSelectFamilyAttemptTimeout(Math.max(net.getDefaultAutoSelectFamilyAttemptTimeout(), 500)); +};