@@ -414,6 +414,7 @@ impl Client {
414
414
async fn get_or_add_relay_with_flag < U > (
415
415
& self ,
416
416
url : U ,
417
+ inherit_pool_subscriptions : bool ,
417
418
flag : RelayServiceFlags ,
418
419
) -> Result < bool , Error >
419
420
where
@@ -430,7 +431,11 @@ impl Client {
430
431
let opts: RelayOptions = opts. flags ( flag) ;
431
432
432
433
// Add relay with opts or edit current one
433
- match self . pool . get_or_add_relay :: < & Url > ( & url, opts) . await ? {
434
+ match self
435
+ . pool
436
+ . get_or_add_relay :: < & Url > ( & url, inherit_pool_subscriptions, opts)
437
+ . await ?
438
+ {
434
439
Some ( relay) => {
435
440
relay. flags_ref ( ) . add ( flag) ;
436
441
Ok ( false )
@@ -481,7 +486,7 @@ impl Client {
481
486
U : TryIntoUrl ,
482
487
pool:: Error : From < <U as TryIntoUrl >:: Err > ,
483
488
{
484
- self . get_or_add_relay_with_flag ( url, RelayServiceFlags :: default ( ) )
489
+ self . get_or_add_relay_with_flag ( url, true , RelayServiceFlags :: default ( ) )
485
490
. await
486
491
}
487
492
@@ -496,21 +501,32 @@ impl Client {
496
501
U : TryIntoUrl ,
497
502
pool:: Error : From < <U as TryIntoUrl >:: Err > ,
498
503
{
499
- self . get_or_add_relay_with_flag ( url, RelayServiceFlags :: PING | RelayServiceFlags :: DISCOVERY )
500
- . await
504
+ self . get_or_add_relay_with_flag (
505
+ url,
506
+ false ,
507
+ RelayServiceFlags :: PING | RelayServiceFlags :: DISCOVERY ,
508
+ )
509
+ . await
501
510
}
502
511
503
512
/// Add read relay
504
513
///
505
514
/// If relay already exists, this method add the `READ` flag to it and return `false`.
515
+ ///
516
+ /// If are set pool subscriptions, the new added relay will inherit them. Use `subscribe_to` method instead of `subscribe`,
517
+ /// to avoid to set pool subscriptions.
506
518
#[ inline]
507
519
pub async fn add_read_relay < U > ( & self , url : U ) -> Result < bool , Error >
508
520
where
509
521
U : TryIntoUrl ,
510
522
pool:: Error : From < <U as TryIntoUrl >:: Err > ,
511
523
{
512
- self . get_or_add_relay_with_flag ( url, RelayServiceFlags :: PING | RelayServiceFlags :: READ )
513
- . await
524
+ self . get_or_add_relay_with_flag (
525
+ url,
526
+ true ,
527
+ RelayServiceFlags :: PING | RelayServiceFlags :: READ ,
528
+ )
529
+ . await
514
530
}
515
531
516
532
/// Add write relay
@@ -522,8 +538,12 @@ impl Client {
522
538
U : TryIntoUrl ,
523
539
pool:: Error : From < <U as TryIntoUrl >:: Err > ,
524
540
{
525
- self . get_or_add_relay_with_flag ( url, RelayServiceFlags :: PING | RelayServiceFlags :: WRITE )
526
- . await
541
+ self . get_or_add_relay_with_flag (
542
+ url,
543
+ false ,
544
+ RelayServiceFlags :: PING | RelayServiceFlags :: WRITE ,
545
+ )
546
+ . await
527
547
}
528
548
529
549
#[ inline]
@@ -532,8 +552,12 @@ impl Client {
532
552
U : TryIntoUrl ,
533
553
pool:: Error : From < <U as TryIntoUrl >:: Err > ,
534
554
{
535
- self . get_or_add_relay_with_flag ( url, RelayServiceFlags :: PING | RelayServiceFlags :: INBOX )
536
- . await
555
+ self . get_or_add_relay_with_flag (
556
+ url,
557
+ false ,
558
+ RelayServiceFlags :: PING | RelayServiceFlags :: INBOX ,
559
+ )
560
+ . await
537
561
}
538
562
539
563
#[ inline]
@@ -542,8 +566,12 @@ impl Client {
542
566
U : TryIntoUrl ,
543
567
pool:: Error : From < <U as TryIntoUrl >:: Err > ,
544
568
{
545
- self . get_or_add_relay_with_flag ( url, RelayServiceFlags :: PING | RelayServiceFlags :: OUTBOX )
546
- . await
569
+ self . get_or_add_relay_with_flag (
570
+ url,
571
+ false ,
572
+ RelayServiceFlags :: PING | RelayServiceFlags :: OUTBOX ,
573
+ )
574
+ . await
547
575
}
548
576
549
577
/// Add new relay with custom [`RelayOptions`]
0 commit comments