@@ -154,6 +154,9 @@ class UA extends EventManager {
154
154
155
155
TransactionBag get transactions => _transactions;
156
156
157
+ // Flag that indicates whether UA is currently stopping
158
+ bool _stopping = false ;
159
+
157
160
// ============
158
161
// High Level API
159
162
// ============
@@ -364,6 +367,8 @@ class UA extends EventManager {
364
367
}
365
368
});
366
369
370
+ _stopping = true ;
371
+
367
372
// Run _close_ on every applicant.
368
373
for (Applicant applicant in _applicants) {
369
374
try {
@@ -505,6 +510,9 @@ class UA extends EventManager {
505
510
* Message
506
511
*/
507
512
void newMessage (Message message, String originator, dynamic request) {
513
+ if (_stopping) {
514
+ return ;
515
+ }
508
516
_applicants.add (message);
509
517
emit (EventNewMessage (
510
518
message: message, originator: originator, request: request));
@@ -514,7 +522,11 @@ class UA extends EventManager {
514
522
* Options
515
523
*/
516
524
void newOptions (Options message, String originator, dynamic request) {
525
+ if (_stopping) {
526
+ return ;
527
+ }
517
528
_applicants.add (message);
529
+
518
530
emit (EventNewOptions (
519
531
message: message, originator: originator, request: request));
520
532
}
@@ -523,13 +535,19 @@ class UA extends EventManager {
523
535
* Message destroyed.
524
536
*/
525
537
void destroyMessage (Message message) {
538
+ if (_stopping) {
539
+ return ;
540
+ }
526
541
_applicants.remove (message);
527
542
}
528
543
529
544
/**
530
545
* Options destroyed.
531
546
*/
532
547
void destroyOptions (Options message) {
548
+ if (_stopping) {
549
+ return ;
550
+ }
533
551
_applicants.remove (message);
534
552
}
535
553
0 commit comments