@@ -414,24 +414,16 @@ internal static string SendBroadcastUDPRequest()
414414 Task < int > sendTask = clientListener . SendAsync ( CLNT_BCAST_EX_Request , CLNT_BCAST_EX_Request . Length , new IPEndPoint ( IPAddress . Broadcast , SqlServerBrowserPort ) ) ;
415415 Task < UdpReceiveResult > receiveTask = null ;
416416 SqlClientEventSource . Log . TrySNITraceEvent ( nameof ( SsrpClient ) , EventType . INFO , "Waiting for UDP Client to fetch list of instances." ) ;
417- Stopwatch sw = new Stopwatch ( ) ; //for waiting until 15 sec elapsed
418- sw . Start ( ) ;
419- try
417+ Stopwatch sw = Stopwatch . StartNew ( ) ; //for waiting until 15 sec elapsed
418+ while ( ( receiveTask = clientListener . ReceiveAsync ( ) ) . Wait ( currentTimeOut ) && sw . ElapsedMilliseconds <= ReceiveMAXTimeoutsForCLNT_BCAST_EX && receiveTask != null )
420419 {
421- while ( ( receiveTask = clientListener . ReceiveAsync ( ) ) . Wait ( currentTimeOut ) && sw . ElapsedMilliseconds <= ReceiveMAXTimeoutsForCLNT_BCAST_EX && receiveTask != null )
420+ currentTimeOut = ReceiveTimeoutsForCLNT_BCAST_EX ;
421+ SqlClientEventSource . Log . TrySNITraceEvent ( nameof ( SsrpClient ) , EventType . INFO , "Received instnace info from UDP Client." ) ;
422+ if ( receiveTask . Result . Buffer . Length < ValidResponseSizeForCLNT_BCAST_EX ) //discard invalid response
422423 {
423- currentTimeOut = ReceiveTimeoutsForCLNT_BCAST_EX ;
424- SqlClientEventSource . Log . TrySNITraceEvent ( nameof ( SsrpClient ) , EventType . INFO , "Received instance info from UDP Client." ) ;
425- if ( receiveTask . Result . Buffer . Length < ValidResponseSizeForCLNT_BCAST_EX ) //discard invalid response
426- {
427- response . Append ( Encoding . ASCII . GetString ( receiveTask . Result . Buffer , ServerResponseHeaderSizeForCLNT_BCAST_EX , receiveTask . Result . Buffer . Length - ServerResponseHeaderSizeForCLNT_BCAST_EX ) ) ; //RESP_DATA(VARIABLE) - 3 (RESP_SIZE + SVR_RESP)
428- }
424+ response . Append ( Encoding . ASCII . GetString ( receiveTask . Result . Buffer , ServerResponseHeaderSizeForCLNT_BCAST_EX , receiveTask . Result . Buffer . Length - ServerResponseHeaderSizeForCLNT_BCAST_EX ) ) ; //RESP_DATA(VARIABLE) - 3 (RESP_SIZE + SVR_RESP)
429425 }
430426 }
431- finally
432- {
433- sw . Stop ( ) ;
434- }
435427 }
436428 }
437429 return response . ToString ( ) ;
0 commit comments