dnssd-advertise 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/dnssd-advertise.js +272 -118
- package/dist/dnssd-advertise.js.map +1 -1
- package/dist/dnssd-advertise.mjs +672 -518
- package/dist/dnssd-advertise.mjs.map +1 -1
- package/package.json +2 -2
package/dist/dnssd-advertise.js
CHANGED
|
@@ -303,7 +303,7 @@ const y = {
|
|
|
303
303
|
}
|
|
304
304
|
};
|
|
305
305
|
|
|
306
|
-
const
|
|
306
|
+
const E = {
|
|
307
307
|
bytes: () => 4,
|
|
308
308
|
write(e, t, n) {
|
|
309
309
|
const r = n.split(".", 4);
|
|
@@ -333,7 +333,7 @@ const g = {
|
|
|
333
333
|
}
|
|
334
334
|
};
|
|
335
335
|
|
|
336
|
-
const
|
|
336
|
+
const p = {
|
|
337
337
|
bytes: () => 16,
|
|
338
338
|
write(e, t, n) {
|
|
339
339
|
const r = n.indexOf("::");
|
|
@@ -423,6 +423,12 @@ const advance = (e, t) => {
|
|
|
423
423
|
e.length &= ~(e.length >> 31);
|
|
424
424
|
};
|
|
425
425
|
|
|
426
|
+
const encodeIntoBuffer = (e, t) => {
|
|
427
|
+
const n = new ArrayBuffer(e.bytes(t));
|
|
428
|
+
const r = e.write(new DataView(n), 0, t);
|
|
429
|
+
return new Uint8Array(n, 0, r);
|
|
430
|
+
};
|
|
431
|
+
|
|
426
432
|
const sliceView = (e, t, n = t.length) => {
|
|
427
433
|
const r = new Uint8Array(e.buffer, e.byteOffset + t.offset, n);
|
|
428
434
|
advance(t, n);
|
|
@@ -490,11 +496,7 @@ const m = withRDLength({
|
|
|
490
496
|
e.setUint8(t + 2, r);
|
|
491
497
|
e.setUint8(t + 3, s);
|
|
492
498
|
t += 4;
|
|
493
|
-
const i = (
|
|
494
|
-
const n = new ArrayBuffer(e.bytes(t));
|
|
495
|
-
const r = e.write(new DataView(n), 0, t);
|
|
496
|
-
return new Uint8Array(n, 0, r);
|
|
497
|
-
})(a === b.v4 ? p : E, n.ip);
|
|
499
|
+
const i = encodeIntoBuffer(a === b.v4 ? E : p, n.ip);
|
|
498
500
|
for (let n = 0; n < o; n++) {
|
|
499
501
|
e.setUint8(t++, i[n]);
|
|
500
502
|
}
|
|
@@ -510,7 +512,7 @@ const m = withRDLength({
|
|
|
510
512
|
family: n,
|
|
511
513
|
sourcePrefixLength: r,
|
|
512
514
|
scopePrefixLength: s,
|
|
513
|
-
ip: n === b.v4 ?
|
|
515
|
+
ip: n === b.v4 ? E.read(e, t) : p.read(e, t)
|
|
514
516
|
};
|
|
515
517
|
}
|
|
516
518
|
});
|
|
@@ -661,11 +663,11 @@ const C = withRDLength(array(h));
|
|
|
661
663
|
|
|
662
664
|
const D = withRDLength(g);
|
|
663
665
|
|
|
664
|
-
const v = withRDLength(array(p));
|
|
665
|
-
|
|
666
666
|
const L = withRDLength(array(E));
|
|
667
667
|
|
|
668
|
-
const k = withRDLength(
|
|
668
|
+
const k = withRDLength(array(p));
|
|
669
|
+
|
|
670
|
+
const v = withRDLength(u);
|
|
669
671
|
|
|
670
672
|
const M = {
|
|
671
673
|
bytes(e) {
|
|
@@ -683,19 +685,19 @@ const M = {
|
|
|
683
685
|
t += D.bytes(e.port) + 2;
|
|
684
686
|
}
|
|
685
687
|
if (e.ipv4hint) {
|
|
686
|
-
t +=
|
|
688
|
+
t += L.bytes(e.ipv4hint) + 2;
|
|
687
689
|
}
|
|
688
690
|
if (e.ipv6hint) {
|
|
689
|
-
t +=
|
|
691
|
+
t += k.bytes(e.ipv6hint) + 2;
|
|
690
692
|
}
|
|
691
693
|
if (e.echconfig) {
|
|
692
|
-
t +=
|
|
694
|
+
t += v.bytes(e.echconfig) + 2;
|
|
693
695
|
}
|
|
694
696
|
if (e.dohpath) {
|
|
695
|
-
t +=
|
|
697
|
+
t += v.bytes(e.dohpath) + 2;
|
|
696
698
|
}
|
|
697
699
|
if (e.odoh) {
|
|
698
|
-
t +=
|
|
700
|
+
t += v.bytes(e.odoh) + 2;
|
|
699
701
|
}
|
|
700
702
|
return t;
|
|
701
703
|
},
|
|
@@ -719,23 +721,23 @@ const M = {
|
|
|
719
721
|
}
|
|
720
722
|
if (n.ipv4hint) {
|
|
721
723
|
e.setUint16(t, R.Ipv4Hint);
|
|
722
|
-
t =
|
|
724
|
+
t = L.write(e, t + 2, n.ipv4hint);
|
|
723
725
|
}
|
|
724
726
|
if (n.ipv6hint) {
|
|
725
727
|
e.setUint16(t, R.Ipv6Hint);
|
|
726
|
-
t =
|
|
728
|
+
t = k.write(e, t + 2, n.ipv6hint);
|
|
727
729
|
}
|
|
728
730
|
if (n.echconfig) {
|
|
729
731
|
e.setUint16(t, R.EchConfig);
|
|
730
|
-
t =
|
|
732
|
+
t = v.write(e, t + 2, n.echconfig);
|
|
731
733
|
}
|
|
732
734
|
if (n.dohpath) {
|
|
733
735
|
e.setUint16(t, R.DohPath);
|
|
734
|
-
t =
|
|
736
|
+
t = v.write(e, t + 2, n.dohpath);
|
|
735
737
|
}
|
|
736
738
|
if (n.odoh) {
|
|
737
739
|
e.setUint16(t, R.Odoh);
|
|
738
|
-
t =
|
|
740
|
+
t = v.write(e, t + 2, n.odoh);
|
|
739
741
|
}
|
|
740
742
|
return t;
|
|
741
743
|
},
|
|
@@ -774,27 +776,27 @@ const M = {
|
|
|
774
776
|
break;
|
|
775
777
|
|
|
776
778
|
case R.Ipv4Hint:
|
|
777
|
-
s.ipv4hint =
|
|
779
|
+
s.ipv4hint = L.read(e, t);
|
|
778
780
|
break;
|
|
779
781
|
|
|
780
782
|
case R.Ipv6Hint:
|
|
781
|
-
s.ipv6hint =
|
|
783
|
+
s.ipv6hint = k.read(e, t);
|
|
782
784
|
break;
|
|
783
785
|
|
|
784
786
|
case R.EchConfig:
|
|
785
|
-
s.echconfig =
|
|
787
|
+
s.echconfig = v.read(e, t);
|
|
786
788
|
break;
|
|
787
789
|
|
|
788
790
|
case R.DohPath:
|
|
789
|
-
s.dohpath = c.decode(
|
|
791
|
+
s.dohpath = c.decode(v.read(e, t));
|
|
790
792
|
break;
|
|
791
793
|
|
|
792
794
|
case R.Odoh:
|
|
793
|
-
s.odoh =
|
|
795
|
+
s.odoh = v.read(e, t);
|
|
794
796
|
break;
|
|
795
797
|
|
|
796
798
|
default:
|
|
797
|
-
|
|
799
|
+
v.read(e, t);
|
|
798
800
|
}
|
|
799
801
|
}
|
|
800
802
|
return s;
|
|
@@ -805,13 +807,13 @@ const _ = withRDLength(u);
|
|
|
805
807
|
|
|
806
808
|
const H = withRDLength(l);
|
|
807
809
|
|
|
808
|
-
const x = withRDLength(
|
|
810
|
+
const x = withRDLength(E);
|
|
809
811
|
|
|
810
|
-
const V = withRDLength(
|
|
812
|
+
const V = withRDLength(p);
|
|
811
813
|
|
|
812
814
|
const Y = withRDLength(array(h));
|
|
813
815
|
|
|
814
|
-
const
|
|
816
|
+
const B = withRDLength({
|
|
815
817
|
bytes: e => l.bytes(e.target) + 6,
|
|
816
818
|
write(e, t, n) {
|
|
817
819
|
e.setUint16(t, n.priority || 0);
|
|
@@ -835,7 +837,7 @@ const q = withRDLength({
|
|
|
835
837
|
}
|
|
836
838
|
});
|
|
837
839
|
|
|
838
|
-
const
|
|
840
|
+
const q = withRDLength({
|
|
839
841
|
bytes: e => h.bytes(e.cpu) + h.bytes(e.os),
|
|
840
842
|
write(e, t, n) {
|
|
841
843
|
t = h.write(e, t, n.cpu);
|
|
@@ -859,7 +861,7 @@ const toCaaTag = e => {
|
|
|
859
861
|
}
|
|
860
862
|
};
|
|
861
863
|
|
|
862
|
-
const
|
|
864
|
+
const K = withRDLength({
|
|
863
865
|
bytes: e => h.bytes(e.tag) + u.bytes(e.value) + 1,
|
|
864
866
|
write(e, t, n) {
|
|
865
867
|
let r = n.flags || 0;
|
|
@@ -882,7 +884,7 @@ const G = withRDLength({
|
|
|
882
884
|
}
|
|
883
885
|
});
|
|
884
886
|
|
|
885
|
-
const
|
|
887
|
+
const G = withRDLength({
|
|
886
888
|
bytes: e => l.bytes(e.mname) + l.bytes(e.rname) + 20,
|
|
887
889
|
write(e, t, n) {
|
|
888
890
|
t = l.write(e, t, n.mname);
|
|
@@ -1152,10 +1154,10 @@ const re = {
|
|
|
1152
1154
|
return t + H.bytes(e.data);
|
|
1153
1155
|
|
|
1154
1156
|
case r.SOA:
|
|
1155
|
-
return t +
|
|
1157
|
+
return t + G.bytes(e.data);
|
|
1156
1158
|
|
|
1157
1159
|
case r.HINFO:
|
|
1158
|
-
return t +
|
|
1160
|
+
return t + q.bytes(e.data);
|
|
1159
1161
|
|
|
1160
1162
|
case r.MX:
|
|
1161
1163
|
return t + X.bytes(e.data);
|
|
@@ -1170,7 +1172,7 @@ const re = {
|
|
|
1170
1172
|
return t + V.bytes(e.data);
|
|
1171
1173
|
|
|
1172
1174
|
case r.SRV:
|
|
1173
|
-
return t +
|
|
1175
|
+
return t + B.bytes(e.data);
|
|
1174
1176
|
|
|
1175
1177
|
case r.NAPTR:
|
|
1176
1178
|
return t + J.bytes(e.data);
|
|
@@ -1204,7 +1206,7 @@ const re = {
|
|
|
1204
1206
|
return t + te.bytes(e.data);
|
|
1205
1207
|
|
|
1206
1208
|
case r.CAA:
|
|
1207
|
-
return t +
|
|
1209
|
+
return t + K.bytes(e.data);
|
|
1208
1210
|
|
|
1209
1211
|
case r.PTR:
|
|
1210
1212
|
case r.CNAME:
|
|
@@ -1238,10 +1240,10 @@ const re = {
|
|
|
1238
1240
|
return H.write(e, t, n.data);
|
|
1239
1241
|
|
|
1240
1242
|
case r.SOA:
|
|
1241
|
-
return
|
|
1243
|
+
return G.write(e, t, n.data);
|
|
1242
1244
|
|
|
1243
1245
|
case r.HINFO:
|
|
1244
|
-
return
|
|
1246
|
+
return q.write(e, t, n.data);
|
|
1245
1247
|
|
|
1246
1248
|
case r.MX:
|
|
1247
1249
|
return X.write(e, t, n.data);
|
|
@@ -1256,7 +1258,7 @@ const re = {
|
|
|
1256
1258
|
return V.write(e, t, n.data);
|
|
1257
1259
|
|
|
1258
1260
|
case r.SRV:
|
|
1259
|
-
return
|
|
1261
|
+
return B.write(e, t, n.data);
|
|
1260
1262
|
|
|
1261
1263
|
case r.NAPTR:
|
|
1262
1264
|
return J.write(e, t, n.data);
|
|
@@ -1287,7 +1289,7 @@ const re = {
|
|
|
1287
1289
|
return te.write(e, t, n.data);
|
|
1288
1290
|
|
|
1289
1291
|
case r.CAA:
|
|
1290
|
-
return
|
|
1292
|
+
return K.write(e, t, n.data);
|
|
1291
1293
|
|
|
1292
1294
|
case r.PTR:
|
|
1293
1295
|
case r.CNAME:
|
|
@@ -1337,11 +1339,11 @@ const re = {
|
|
|
1337
1339
|
return i;
|
|
1338
1340
|
|
|
1339
1341
|
case r.SOA:
|
|
1340
|
-
i.data =
|
|
1342
|
+
i.data = G.read(e, t);
|
|
1341
1343
|
return i;
|
|
1342
1344
|
|
|
1343
1345
|
case r.HINFO:
|
|
1344
|
-
i.data =
|
|
1346
|
+
i.data = q.read(e, t);
|
|
1345
1347
|
return i;
|
|
1346
1348
|
|
|
1347
1349
|
case r.MX:
|
|
@@ -1361,7 +1363,7 @@ const re = {
|
|
|
1361
1363
|
return i;
|
|
1362
1364
|
|
|
1363
1365
|
case r.SRV:
|
|
1364
|
-
i.data =
|
|
1366
|
+
i.data = B.read(e, t);
|
|
1365
1367
|
return i;
|
|
1366
1368
|
|
|
1367
1369
|
case r.NAPTR:
|
|
@@ -1402,7 +1404,7 @@ const re = {
|
|
|
1402
1404
|
return i;
|
|
1403
1405
|
|
|
1404
1406
|
case r.CAA:
|
|
1405
|
-
i.data =
|
|
1407
|
+
i.data = K.read(e, t);
|
|
1406
1408
|
return i;
|
|
1407
1409
|
|
|
1408
1410
|
case r.PTR:
|
|
@@ -1418,6 +1420,117 @@ const re = {
|
|
|
1418
1420
|
}
|
|
1419
1421
|
};
|
|
1420
1422
|
|
|
1423
|
+
const compareAnswers = (e, t) => {
|
|
1424
|
+
if (e.type === r.OPT || t.type === r.OPT) {
|
|
1425
|
+
return 0;
|
|
1426
|
+
}
|
|
1427
|
+
const n = e.class || s.IN;
|
|
1428
|
+
const a = t.class || s.IN;
|
|
1429
|
+
if (n !== a) {
|
|
1430
|
+
return n - a;
|
|
1431
|
+
} else if (e.type !== t.type) {
|
|
1432
|
+
return e.type - t.type;
|
|
1433
|
+
}
|
|
1434
|
+
let o;
|
|
1435
|
+
switch (e.type) {
|
|
1436
|
+
case r.A:
|
|
1437
|
+
o = x;
|
|
1438
|
+
break;
|
|
1439
|
+
|
|
1440
|
+
case r.NS:
|
|
1441
|
+
o = H;
|
|
1442
|
+
break;
|
|
1443
|
+
|
|
1444
|
+
case r.SOA:
|
|
1445
|
+
o = G;
|
|
1446
|
+
break;
|
|
1447
|
+
|
|
1448
|
+
case r.HINFO:
|
|
1449
|
+
o = q;
|
|
1450
|
+
break;
|
|
1451
|
+
|
|
1452
|
+
case r.MX:
|
|
1453
|
+
o = X;
|
|
1454
|
+
break;
|
|
1455
|
+
|
|
1456
|
+
case r.TXT:
|
|
1457
|
+
o = Y;
|
|
1458
|
+
break;
|
|
1459
|
+
|
|
1460
|
+
case r.RP:
|
|
1461
|
+
o = z;
|
|
1462
|
+
break;
|
|
1463
|
+
|
|
1464
|
+
case r.AAAA:
|
|
1465
|
+
o = V;
|
|
1466
|
+
break;
|
|
1467
|
+
|
|
1468
|
+
case r.SRV:
|
|
1469
|
+
o = B;
|
|
1470
|
+
break;
|
|
1471
|
+
|
|
1472
|
+
case r.NAPTR:
|
|
1473
|
+
o = J;
|
|
1474
|
+
break;
|
|
1475
|
+
|
|
1476
|
+
case r.DS:
|
|
1477
|
+
o = Z;
|
|
1478
|
+
break;
|
|
1479
|
+
|
|
1480
|
+
case r.SSHFP:
|
|
1481
|
+
o = W;
|
|
1482
|
+
break;
|
|
1483
|
+
|
|
1484
|
+
case r.RRSIG:
|
|
1485
|
+
o = F;
|
|
1486
|
+
break;
|
|
1487
|
+
|
|
1488
|
+
case r.NSEC:
|
|
1489
|
+
o = Q;
|
|
1490
|
+
break;
|
|
1491
|
+
|
|
1492
|
+
case r.DNSKEY:
|
|
1493
|
+
o = $;
|
|
1494
|
+
break;
|
|
1495
|
+
|
|
1496
|
+
case r.NSEC3:
|
|
1497
|
+
o = j;
|
|
1498
|
+
break;
|
|
1499
|
+
|
|
1500
|
+
case r.TLSA:
|
|
1501
|
+
o = ee;
|
|
1502
|
+
break;
|
|
1503
|
+
|
|
1504
|
+
case r.SVCB:
|
|
1505
|
+
case r.HTTPS:
|
|
1506
|
+
o = te;
|
|
1507
|
+
break;
|
|
1508
|
+
|
|
1509
|
+
case r.CAA:
|
|
1510
|
+
o = K;
|
|
1511
|
+
break;
|
|
1512
|
+
|
|
1513
|
+
case r.PTR:
|
|
1514
|
+
case r.CNAME:
|
|
1515
|
+
case r.DNAME:
|
|
1516
|
+
o = H;
|
|
1517
|
+
break;
|
|
1518
|
+
|
|
1519
|
+
default:
|
|
1520
|
+
o = _;
|
|
1521
|
+
}
|
|
1522
|
+
const i = encodeIntoBuffer(o, e.data);
|
|
1523
|
+
const c = encodeIntoBuffer(o, t.data);
|
|
1524
|
+
const f = i.byteLength < c.byteLength ? i.byteLength : c.byteLength;
|
|
1525
|
+
for (let e = 2; e < f; e++) {
|
|
1526
|
+
const t = i[e] - c[e];
|
|
1527
|
+
if (0 !== t) {
|
|
1528
|
+
return t < 0 ? -1 : 1;
|
|
1529
|
+
}
|
|
1530
|
+
}
|
|
1531
|
+
return i.byteLength !== c.byteLength ? i.byteLength < c.byteLength ? -1 : 1 : 0;
|
|
1532
|
+
};
|
|
1533
|
+
|
|
1421
1534
|
const readList = (e, t, n, r) => {
|
|
1422
1535
|
if (!r) {
|
|
1423
1536
|
return;
|
|
@@ -1599,12 +1712,15 @@ const aaaaAnswers = (e, t, n) => t.filter(e => e.family === fe.v6).map(t => ({
|
|
|
1599
1712
|
|
|
1600
1713
|
const answers = (e, t, n) => [ ...ptrAnswers(e, n), srvAnswer(e, n), txtAnswer(e, n), ...aAnswers(e, t, n), ...aaaaAnswers(e, t, n) ];
|
|
1601
1714
|
|
|
1715
|
+
const authorities = (e, t, n) => [ ...aAnswers(e, t, n), txtAnswer(e, n), ...aaaaAnswers(e, t, n), srvAnswer(e, n) ];
|
|
1716
|
+
|
|
1602
1717
|
let ce = function(e) {
|
|
1603
1718
|
e[e.NONE = 0] = "NONE";
|
|
1604
1719
|
e[e.NAME = 1] = "NAME";
|
|
1605
1720
|
e[e.HOSTNAME_A = 2] = "HOSTNAME_A";
|
|
1606
1721
|
e[e.HOSTNAME_AAAA = 4] = "HOSTNAME_AAAA";
|
|
1607
1722
|
e[e.HOSTNAME = e.HOSTNAME_A | e.HOSTNAME_AAAA] = "HOSTNAME";
|
|
1723
|
+
e[e.LOST_TIEBREAKER = 8] = "LOST_TIEBREAKER";
|
|
1608
1724
|
return e;
|
|
1609
1725
|
}({});
|
|
1610
1726
|
|
|
@@ -1667,10 +1783,29 @@ const checkQuestionConflicts = (e, t, s) => {
|
|
|
1667
1783
|
if (e.type !== n.QUERY || !e.questions?.length || !e.authorities?.length) {
|
|
1668
1784
|
return ce.NONE;
|
|
1669
1785
|
}
|
|
1670
|
-
|
|
1786
|
+
if (!e.questions.some(e => {
|
|
1671
1787
|
const n = e.name.toLowerCase();
|
|
1672
1788
|
return (e => e.type === r.ANY || e.type === r.A || e.type === r.AAAA || e.type === r.SRV || e.type === r.TXT || e.type === r.PTR)(e) && (n === t.host || n === t.fqdnIn);
|
|
1673
|
-
})
|
|
1789
|
+
})) {
|
|
1790
|
+
return ce.NONE;
|
|
1791
|
+
}
|
|
1792
|
+
const a = ((e, t) => {
|
|
1793
|
+
e.sort(compareAnswers);
|
|
1794
|
+
t.sort(compareAnswers);
|
|
1795
|
+
const n = e.length < t.length ? e.length : t.length;
|
|
1796
|
+
for (let r = 0; r < n; r++) {
|
|
1797
|
+
const n = compareAnswers(e[r], t[r]);
|
|
1798
|
+
if (0 !== n) {
|
|
1799
|
+
return n;
|
|
1800
|
+
}
|
|
1801
|
+
}
|
|
1802
|
+
return e.length !== t.length ? e.length < t.length ? -1 : 1 : 0;
|
|
1803
|
+
})(authorities(t, s, t.ttl), e.authorities.filter(e => e.name?.toLowerCase() === t.host || e.name?.toLowerCase() === t.fqdnIn));
|
|
1804
|
+
if (a < 0) {
|
|
1805
|
+
return checkAnswerConflicts(e.authorities, t, s);
|
|
1806
|
+
} else {
|
|
1807
|
+
return ce.NONE;
|
|
1808
|
+
}
|
|
1674
1809
|
};
|
|
1675
1810
|
|
|
1676
1811
|
const responseMessage = (e, t, s, o) => {
|
|
@@ -2140,13 +2275,16 @@ const ye = {
|
|
|
2140
2275
|
e.delete(onCancel);
|
|
2141
2276
|
let i = !1;
|
|
2142
2277
|
try {
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2278
|
+
let e;
|
|
2279
|
+
if (n) {
|
|
2280
|
+
e = await n({
|
|
2281
|
+
attempt: r,
|
|
2282
|
+
async retry(e) {
|
|
2283
|
+
i = !0;
|
|
2284
|
+
return schedule(r + 1, e);
|
|
2285
|
+
}
|
|
2286
|
+
});
|
|
2287
|
+
}
|
|
2150
2288
|
a(e);
|
|
2151
2289
|
} catch (e) {
|
|
2152
2290
|
if (!i && shouldRetry(t, r)) {
|
|
@@ -2234,11 +2372,12 @@ const ye = {
|
|
|
2234
2372
|
hostname
|
|
2235
2373
|
};
|
|
2236
2374
|
|
|
2237
|
-
let
|
|
2375
|
+
let Ee = function(e) {
|
|
2238
2376
|
e[e.SEND = 0] = "SEND";
|
|
2239
2377
|
e[e.PROBE = 1] = "PROBE";
|
|
2240
2378
|
e[e.ANNOUNCE = 2] = "ANNOUNCE";
|
|
2241
2379
|
e[e.REOPEN = 3] = "REOPEN";
|
|
2380
|
+
e[e.DELAY = 4] = "DELAY";
|
|
2242
2381
|
return e;
|
|
2243
2382
|
}({});
|
|
2244
2383
|
|
|
@@ -2248,31 +2387,37 @@ const randomDelay = (e, t) => e + Math.floor(Math.random() * (t - e + 1));
|
|
|
2248
2387
|
|
|
2249
2388
|
const shouldRetry = (e, t) => {
|
|
2250
2389
|
switch (e) {
|
|
2251
|
-
case
|
|
2252
|
-
case
|
|
2390
|
+
case Ee.SEND:
|
|
2391
|
+
case Ee.PROBE:
|
|
2253
2392
|
return t < 4;
|
|
2254
2393
|
|
|
2255
|
-
case
|
|
2394
|
+
case Ee.ANNOUNCE:
|
|
2256
2395
|
return t < 3;
|
|
2257
2396
|
|
|
2258
|
-
case
|
|
2397
|
+
case Ee.REOPEN:
|
|
2259
2398
|
return !0;
|
|
2399
|
+
|
|
2400
|
+
case Ee.DELAY:
|
|
2401
|
+
return !1;
|
|
2260
2402
|
}
|
|
2261
2403
|
};
|
|
2262
2404
|
|
|
2263
2405
|
const getDelay = (e, t) => {
|
|
2264
2406
|
switch (e) {
|
|
2265
|
-
case
|
|
2407
|
+
case Ee.SEND:
|
|
2266
2408
|
return randomDelay(20, 120);
|
|
2267
2409
|
|
|
2268
|
-
case
|
|
2410
|
+
case Ee.PROBE:
|
|
2269
2411
|
return t ? 250 : randomDelay(0, 250);
|
|
2270
2412
|
|
|
2271
|
-
case
|
|
2413
|
+
case Ee.ANNOUNCE:
|
|
2272
2414
|
return t ? 1e3 * 2 ** (Math.min(t, 3) - 1) : 0;
|
|
2273
2415
|
|
|
2274
|
-
case
|
|
2416
|
+
case Ee.REOPEN:
|
|
2275
2417
|
return 6e3;
|
|
2418
|
+
|
|
2419
|
+
case Ee.DELAY:
|
|
2420
|
+
return 1e3;
|
|
2276
2421
|
}
|
|
2277
2422
|
};
|
|
2278
2423
|
|
|
@@ -2282,7 +2427,7 @@ const runTimer = (e, t, n) => {
|
|
|
2282
2427
|
let a;
|
|
2283
2428
|
if (s) {
|
|
2284
2429
|
for (const t of s) {
|
|
2285
|
-
if (e ===
|
|
2430
|
+
if (e === Ee.REOPEN || Math.abs(t.time - r) <= 100) {
|
|
2286
2431
|
a = t;
|
|
2287
2432
|
break;
|
|
2288
2433
|
}
|
|
@@ -2327,12 +2472,12 @@ class AbortError extends Error {
|
|
|
2327
2472
|
}
|
|
2328
2473
|
}
|
|
2329
2474
|
|
|
2330
|
-
var
|
|
2475
|
+
var pe = function(e) {
|
|
2331
2476
|
e[e.PROBING = 0] = "PROBING";
|
|
2332
2477
|
e[e.ADVERTISE = 2] = "ADVERTISE";
|
|
2333
2478
|
e[e.CLOSED = 3] = "CLOSED";
|
|
2334
2479
|
return e;
|
|
2335
|
-
}(
|
|
2480
|
+
}(pe || {});
|
|
2336
2481
|
|
|
2337
2482
|
function createInterfaceAdvertiser(e, t, o) {
|
|
2338
2483
|
const i = o.createServiceInput(t);
|
|
@@ -2340,11 +2485,11 @@ function createInterfaceAdvertiser(e, t, o) {
|
|
|
2340
2485
|
let f = 0;
|
|
2341
2486
|
let l = 0;
|
|
2342
2487
|
let u = o.createServiceRecord(i);
|
|
2343
|
-
let d =
|
|
2488
|
+
let d = pe.PROBING;
|
|
2344
2489
|
let h = ce.NONE;
|
|
2345
2490
|
const y = o.createSocket(e, {
|
|
2346
2491
|
async onMessage(e, t) {
|
|
2347
|
-
if (d ===
|
|
2492
|
+
if (d === pe.CLOSED) {
|
|
2348
2493
|
return;
|
|
2349
2494
|
}
|
|
2350
2495
|
const r = function decode(e) {
|
|
@@ -2354,25 +2499,29 @@ function createInterfaceAdvertiser(e, t, o) {
|
|
|
2354
2499
|
length: t.byteLength
|
|
2355
2500
|
});
|
|
2356
2501
|
}(e);
|
|
2357
|
-
if (d ===
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2502
|
+
if (d === pe.PROBING) {
|
|
2503
|
+
if (r.type === n.QUERY) {
|
|
2504
|
+
l++;
|
|
2505
|
+
const e = checkQuestionConflicts(r, u, y.bindings);
|
|
2506
|
+
h |= e !== ce.NONE ? e | ce.LOST_TIEBREAKER : ce.NONE;
|
|
2507
|
+
} else if (r.type === n.RESPONSE) {
|
|
2508
|
+
h |= checkResponseConflicts(r, u, y.bindings);
|
|
2509
|
+
}
|
|
2510
|
+
} else if (d === pe.ADVERTISE) {
|
|
2362
2511
|
h = checkResponseConflicts(r, u, y.bindings);
|
|
2363
2512
|
if (resolveConflicts()) {
|
|
2364
|
-
d =
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
}(
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2513
|
+
d = pe.PROBING;
|
|
2514
|
+
} else {
|
|
2515
|
+
try {
|
|
2516
|
+
await async function sendReply(e, t) {
|
|
2517
|
+
const n = responseMessage(e, u, y.bindings, !1);
|
|
2518
|
+
const r = responseMessage(e, u, y.bindings, !0);
|
|
2519
|
+
await Promise.all([ n && c.schedule(Ee.SEND, () => t.reply(n)), r && c.schedule(Ee.SEND, () => y.send(r)) ]);
|
|
2520
|
+
}(r, t);
|
|
2521
|
+
} catch (e) {
|
|
2522
|
+
if (!AbortError.isAbortError(e)) {
|
|
2523
|
+
o.onError(e);
|
|
2524
|
+
}
|
|
2376
2525
|
}
|
|
2377
2526
|
}
|
|
2378
2527
|
}
|
|
@@ -2392,9 +2541,9 @@ function createInterfaceAdvertiser(e, t, o) {
|
|
|
2392
2541
|
class: s.IN,
|
|
2393
2542
|
qu: !0
|
|
2394
2543
|
} ],
|
|
2395
|
-
authorities:
|
|
2544
|
+
authorities: authorities(e, t, e.ttl)
|
|
2396
2545
|
}))(u, y.bindings);
|
|
2397
|
-
await c.schedule(
|
|
2546
|
+
await c.schedule(Ee.SEND, () => y.send(e));
|
|
2398
2547
|
}
|
|
2399
2548
|
async function sendAnnouncement() {
|
|
2400
2549
|
const e = ((e, t) => encode({
|
|
@@ -2402,7 +2551,7 @@ function createInterfaceAdvertiser(e, t, o) {
|
|
|
2402
2551
|
flags: a.AUTHORITATIVE_ANSWER,
|
|
2403
2552
|
answers: answers(e, t, e.ttl)
|
|
2404
2553
|
}))(u, y.bindings);
|
|
2405
|
-
await c.schedule(
|
|
2554
|
+
await c.schedule(Ee.SEND, () => y.send(e));
|
|
2406
2555
|
}
|
|
2407
2556
|
async function sendGoodbye() {
|
|
2408
2557
|
const e = ((e, t) => encode({
|
|
@@ -2410,7 +2559,7 @@ function createInterfaceAdvertiser(e, t, o) {
|
|
|
2410
2559
|
flags: a.AUTHORITATIVE_ANSWER,
|
|
2411
2560
|
answers: answers(e, t, 0)
|
|
2412
2561
|
}))(u, y.bindings);
|
|
2413
|
-
await c.schedule(
|
|
2562
|
+
await c.schedule(Ee.SEND, () => y.send(e));
|
|
2414
2563
|
}
|
|
2415
2564
|
function resolveConflicts() {
|
|
2416
2565
|
if (h !== ce.NONE) {
|
|
@@ -2429,37 +2578,41 @@ function createInterfaceAdvertiser(e, t, o) {
|
|
|
2429
2578
|
}
|
|
2430
2579
|
function next() {
|
|
2431
2580
|
switch (d) {
|
|
2432
|
-
case
|
|
2581
|
+
case pe.PROBING:
|
|
2433
2582
|
return async function probe() {
|
|
2434
2583
|
l = 0;
|
|
2435
2584
|
h = ce.NONE;
|
|
2436
|
-
|
|
2585
|
+
let e = 3;
|
|
2586
|
+
await c.schedule(Ee.PROBE, async t => {
|
|
2587
|
+
const n = h & ce.LOST_TIEBREAKER;
|
|
2437
2588
|
if (y.closed) {
|
|
2438
|
-
d =
|
|
2589
|
+
d = pe.CLOSED;
|
|
2439
2590
|
return;
|
|
2440
|
-
} else if (d !==
|
|
2591
|
+
} else if (d !== pe.PROBING) {
|
|
2441
2592
|
return;
|
|
2442
|
-
} else if (
|
|
2443
|
-
if (
|
|
2444
|
-
|
|
2445
|
-
} else {
|
|
2446
|
-
d = Ee.CLOSED;
|
|
2593
|
+
} else if (resolveConflicts()) {
|
|
2594
|
+
if (n) {
|
|
2595
|
+
await c.schedule(Ee.DELAY);
|
|
2447
2596
|
}
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2597
|
+
e += 4;
|
|
2598
|
+
return t.retry();
|
|
2599
|
+
} else if (t.attempt < e) {
|
|
2451
2600
|
await sendProbe();
|
|
2452
|
-
return
|
|
2601
|
+
return t.retry();
|
|
2602
|
+
} else if (l) {
|
|
2603
|
+
d = h === ce.NONE ? pe.ADVERTISE : pe.CLOSED;
|
|
2604
|
+
} else {
|
|
2605
|
+
d = pe.CLOSED;
|
|
2453
2606
|
}
|
|
2454
2607
|
});
|
|
2455
2608
|
return next();
|
|
2456
2609
|
}();
|
|
2457
2610
|
|
|
2458
|
-
case
|
|
2611
|
+
case pe.ADVERTISE:
|
|
2459
2612
|
return async function announce() {
|
|
2460
|
-
while (d ===
|
|
2461
|
-
if (!await c.schedule(
|
|
2462
|
-
if (d !==
|
|
2613
|
+
while (d === pe.ADVERTISE && !y.closed) {
|
|
2614
|
+
if (!await c.schedule(Ee.ANNOUNCE, async e => {
|
|
2615
|
+
if (d !== pe.ADVERTISE) {
|
|
2463
2616
|
return !1;
|
|
2464
2617
|
} else if (e.attempt > 2 && y.refresh()) {
|
|
2465
2618
|
return !0;
|
|
@@ -2472,8 +2625,8 @@ function createInterfaceAdvertiser(e, t, o) {
|
|
|
2472
2625
|
}
|
|
2473
2626
|
return !1;
|
|
2474
2627
|
})) {
|
|
2475
|
-
await c.schedule(
|
|
2476
|
-
if (d !==
|
|
2628
|
+
await c.schedule(Ee.REOPEN, async e => {
|
|
2629
|
+
if (d !== pe.ADVERTISE) {
|
|
2477
2630
|
return;
|
|
2478
2631
|
} else if (!y.refresh() && !y.closed) {
|
|
2479
2632
|
return e.retry();
|
|
@@ -2484,19 +2637,20 @@ function createInterfaceAdvertiser(e, t, o) {
|
|
|
2484
2637
|
return next();
|
|
2485
2638
|
}();
|
|
2486
2639
|
|
|
2487
|
-
case
|
|
2640
|
+
case pe.CLOSED:
|
|
2488
2641
|
return async function reopen() {
|
|
2489
2642
|
c.cancel();
|
|
2490
2643
|
if (f++ > 15) {
|
|
2491
2644
|
return;
|
|
2492
2645
|
}
|
|
2493
|
-
await c.schedule(
|
|
2494
|
-
if (d
|
|
2495
|
-
return e.retry();
|
|
2496
|
-
} else if (!y.closed) {
|
|
2497
|
-
d = Ee.PROBING;
|
|
2646
|
+
await c.schedule(Ee.REOPEN, async e => {
|
|
2647
|
+
if (d !== pe.CLOSED) {
|
|
2498
2648
|
return;
|
|
2499
2649
|
}
|
|
2650
|
+
if (!y.refresh() || y.closed) {
|
|
2651
|
+
return e.retry();
|
|
2652
|
+
}
|
|
2653
|
+
d = pe.PROBING;
|
|
2500
2654
|
});
|
|
2501
2655
|
return next();
|
|
2502
2656
|
}();
|
|
@@ -2505,7 +2659,7 @@ function createInterfaceAdvertiser(e, t, o) {
|
|
|
2505
2659
|
return {
|
|
2506
2660
|
promise: (async () => {
|
|
2507
2661
|
try {
|
|
2508
|
-
d =
|
|
2662
|
+
d = pe.PROBING;
|
|
2509
2663
|
await next();
|
|
2510
2664
|
c.cancel();
|
|
2511
2665
|
} catch (e) {
|
|
@@ -2519,8 +2673,8 @@ function createInterfaceAdvertiser(e, t, o) {
|
|
|
2519
2673
|
async close() {
|
|
2520
2674
|
try {
|
|
2521
2675
|
c.cancel();
|
|
2522
|
-
if (d !==
|
|
2523
|
-
d =
|
|
2676
|
+
if (d !== pe.CLOSED) {
|
|
2677
|
+
d = pe.CLOSED;
|
|
2524
2678
|
await sendGoodbye();
|
|
2525
2679
|
}
|
|
2526
2680
|
c.cancel();
|
|
@@ -2543,7 +2697,7 @@ exports.advertise = function advertise(e) {
|
|
|
2543
2697
|
for (const s of n) {
|
|
2544
2698
|
r.set(s, createInterfaceAdvertiser(s, e, t));
|
|
2545
2699
|
}
|
|
2546
|
-
s.schedule(
|
|
2700
|
+
s.schedule(Ee.REOPEN, n => {
|
|
2547
2701
|
try {
|
|
2548
2702
|
const s = new Set(t.networkInterfaceNames());
|
|
2549
2703
|
for (const n of s) {
|