11import type { File , TaskResultPack } from '@vitest/runner'
22
3+ import type { IncomingMessage } from 'node:http'
34import type { ViteDevServer } from 'vite'
45import type { WebSocket } from 'ws'
56import type { Vitest } from '../node/core'
@@ -21,6 +22,7 @@ import { API_PATH } from '../constants'
2122import { getModuleGraph } from '../utils/graph'
2223import { stringifyReplace } from '../utils/serialization'
2324import { parseErrorStacktrace } from '../utils/source-map'
25+ import { isValidApiRequest } from './check'
2426
2527export function setup ( ctx : Vitest , _server ?: ViteDevServer ) {
2628 const wss = new WebSocketServer ( { noServer : true } )
@@ -29,7 +31,7 @@ export function setup(ctx: Vitest, _server?: ViteDevServer) {
2931
3032 const server = _server || ctx . server
3133
32- server . httpServer ?. on ( 'upgrade' , ( request , socket , head ) => {
34+ server . httpServer ?. on ( 'upgrade' , ( request : IncomingMessage , socket , head ) => {
3335 if ( ! request . url ) {
3436 return
3537 }
@@ -39,6 +41,11 @@ export function setup(ctx: Vitest, _server?: ViteDevServer) {
3941 return
4042 }
4143
44+ if ( ! isValidApiRequest ( ctx . config , request ) ) {
45+ socket . destroy ( )
46+ return
47+ }
48+
4249 wss . handleUpgrade ( request , socket , head , ( ws ) => {
4350 wss . emit ( 'connection' , ws , request )
4451 setupClient ( ws )
0 commit comments