File tree 2 files changed +20
-6
lines changed
2 files changed +20
-6
lines changed Original file line number Diff line number Diff line change @@ -6,7 +6,9 @@ import { logger } from 'vs/server/node/logger';
6
6
import { enableCustomMarketplace } from 'vs/server/node/marketplace' ;
7
7
import { Vscode } from 'vs/server/node/server' ;
8
8
9
- setUnexpectedErrorHandler ( ( error ) => logger . warn ( error instanceof Error ? error . message : error ) ) ;
9
+ setUnexpectedErrorHandler ( ( error ) => {
10
+ logger . warn ( 'Uncaught error' , field ( 'error' , error instanceof Error ? error . message : error ) ) ;
11
+ } ) ;
10
12
enableCustomMarketplace ( ) ;
11
13
proxyAgent . monkeyPatch ( true ) ;
12
14
Original file line number Diff line number Diff line change @@ -54,10 +54,24 @@ export class Protocol extends PersistentProtocol {
54
54
*/
55
55
public handshake ( ) : Promise < ConnectionTypeRequest > {
56
56
this . logger . debug ( 'Initiating handshake...' ) ;
57
+
57
58
return new Promise ( ( resolve , reject ) => {
59
+ const cleanup = ( ) => {
60
+ handler . dispose ( ) ;
61
+ onClose . dispose ( ) ;
62
+ clearTimeout ( timeout ) ;
63
+ } ;
64
+
65
+ const onClose = this . onSocketClose ( ( ) => {
66
+ cleanup ( ) ;
67
+ this . logger . debug ( 'Handshake failed' ) ;
68
+ reject ( new Error ( 'Protocol socket closed unexpectedly' ) ) ;
69
+ } ) ;
70
+
58
71
const timeout = setTimeout ( ( ) => {
72
+ cleanup ( ) ;
59
73
this . logger . debug ( 'Handshake timed out' ) ;
60
- reject ( new Error ( 'protocol handshake timed out' ) ) ;
74
+ reject ( new Error ( 'Protocol handshake timed out' ) ) ;
61
75
} , 10000 ) ; // Matches the client timeout.
62
76
63
77
const handler = this . onControlMessage ( ( rawMessage ) => {
@@ -69,16 +83,14 @@ export class Protocol extends PersistentProtocol {
69
83
case 'auth' :
70
84
return this . authenticate ( message ) ;
71
85
case 'connectionType' :
72
- handler . dispose ( ) ;
73
- clearTimeout ( timeout ) ;
86
+ cleanup ( ) ;
74
87
this . logger . debug ( 'Handshake completed' ) ;
75
88
return resolve ( message ) ;
76
89
default :
77
90
throw new Error ( 'Unrecognized message type' ) ;
78
91
}
79
92
} catch ( error ) {
80
- handler . dispose ( ) ;
81
- clearTimeout ( timeout ) ;
93
+ cleanup ( ) ;
82
94
reject ( error ) ;
83
95
}
84
96
} ) ;
You can’t perform that action at this time.
0 commit comments