File tree 1 file changed +21
-16
lines changed
1 file changed +21
-16
lines changed Original file line number Diff line number Diff line change @@ -512,10 +512,9 @@ func (s *ArduinoCoreServerImpl) Monitor(stream rpc.ArduinoCoreService_MonitorSer
512
512
// Send a message with Success set to true to notify the caller of the port being now active
513
513
_ = stream .Send (& rpc.MonitorResponse {Success : true })
514
514
515
+ cancelCtx , cancel := context .WithCancel (stream .Context ())
515
516
go func () {
516
- // close port on gRPC call EOF or errors
517
- defer portProxy .Close ()
518
-
517
+ defer cancel ()
519
518
for {
520
519
msg , err := stream .Recv ()
521
520
if errors .Is (err , io .EOF ) {
@@ -547,19 +546,25 @@ func (s *ArduinoCoreServerImpl) Monitor(stream rpc.ArduinoCoreService_MonitorSer
547
546
}
548
547
}()
549
548
550
- buff := make ([]byte , 4096 )
551
- for {
552
- n , err := portProxy .Read (buff )
553
- if errors .Is (err , io .EOF ) {
554
- break
555
- }
556
- if err != nil {
557
- stream .Send (& rpc.MonitorResponse {Error : err .Error ()})
558
- break
559
- }
560
- if err := stream .Send (& rpc.MonitorResponse {RxData : buff [:n ]}); err != nil {
561
- break
549
+ go func () {
550
+ defer cancel ()
551
+ buff := make ([]byte , 4096 )
552
+ for {
553
+ n , err := portProxy .Read (buff )
554
+ if errors .Is (err , io .EOF ) {
555
+ break
556
+ }
557
+ if err != nil {
558
+ stream .Send (& rpc.MonitorResponse {Error : err .Error ()})
559
+ break
560
+ }
561
+ if err := stream .Send (& rpc.MonitorResponse {RxData : buff [:n ]}); err != nil {
562
+ break
563
+ }
562
564
}
563
- }
565
+ }()
566
+
567
+ <- cancelCtx .Done ()
568
+ portProxy .Close ()
564
569
return nil
565
570
}
You can’t perform that action at this time.
0 commit comments