p2p2 0.20.0 → 0.25.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/p2p2/p1.rb +1 -1
- data/lib/p2p2/p1_worker.rb +57 -45
- data/lib/p2p2/p2.rb +1 -1
- data/lib/p2p2/p2_worker.rb +64 -54
- data/lib/p2p2/p2pd.rb +1 -1
- data/lib/p2p2/p2pd_worker.rb +15 -15
- data/lib/p2p2/version.rb +1 -1
- data/p2p2.gemspec +1 -1
- metadata +4 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b2e5798d8439e44d3acbb68a9a8749a1d7dc69c43a5f6effea95f6360185a0a
|
4
|
+
data.tar.gz: a306f7dfe4be190712e7317de0f7324135e16075a39af9d7d3408aa3ab978bd5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8542ffdd4ed556d9a7d0aa3fbbf3f8da180610bb6a3d8bf04567bb4bc75852f45fd6821c748490e42cf85d51fdaa0b7abf62a49eff50e38565584523de79c07a
|
7
|
+
data.tar.gz: a6f98e9fb4116a19e473ed46e4767e54bf4113bb7e91da6970f64ba75f0f5fbf4f1a5f2118d6dff970640aecf9ad39cc34854ed0e317ef740c77589d1b60ba21
|
data/lib/p2p2/p1.rb
CHANGED
data/lib/p2p2/p1_worker.rb
CHANGED
@@ -99,14 +99,14 @@ module P2p2
|
|
99
99
|
else
|
100
100
|
@tund_info[ :dst_exts ].each do | dst_local_port, dst_ext |
|
101
101
|
if dst_ext[ :dst ].closed? && ( now - dst_ext[ :last_continue_at ] > EXPIRE_AFTER )
|
102
|
-
puts "#{ Time.new } expire dst ext
|
102
|
+
puts "#{ Time.new } expire dst ext"
|
103
103
|
del_dst_ext( dst_local_port )
|
104
104
|
end
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
108
108
|
@dst_infos.each do | dst, dst_info |
|
109
|
-
if
|
109
|
+
if now - dst_info[ :last_continue_at ] > EXPIRE_AFTER
|
110
110
|
puts "#{ Time.new } expire dst"
|
111
111
|
set_is_closing( dst )
|
112
112
|
end
|
@@ -118,7 +118,7 @@ module P2p2
|
|
118
118
|
# puts "debug2 heartbeat"
|
119
119
|
add_tund_ctlmsg( pack_a_heartbeat )
|
120
120
|
next_tick
|
121
|
-
elsif now - @tund_info[ :
|
121
|
+
elsif now - @tund_info[ :created_at ] > EXPIRE_NEW
|
122
122
|
# no tun addr
|
123
123
|
puts "#{ Time.new } expire new tund"
|
124
124
|
set_is_closing( @tund )
|
@@ -374,6 +374,25 @@ module P2p2
|
|
374
374
|
end
|
375
375
|
end
|
376
376
|
|
377
|
+
##
|
378
|
+
# send data
|
379
|
+
#
|
380
|
+
def send_data( tund, data, to_addr )
|
381
|
+
begin
|
382
|
+
tund.sendmsg( data, 0, to_addr )
|
383
|
+
rescue IO::WaitWritable, Errno::EINTR
|
384
|
+
return false
|
385
|
+
rescue Errno::EHOSTUNREACH, Errno::ENETUNREACH, Errno::ENETDOWN => e
|
386
|
+
puts "#{ Time.new } #{ e.class }, close tund"
|
387
|
+
close_tund( tund )
|
388
|
+
sleep HEARTBEAT_INTERVAL
|
389
|
+
new_a_tund
|
390
|
+
return false
|
391
|
+
end
|
392
|
+
|
393
|
+
true
|
394
|
+
end
|
395
|
+
|
377
396
|
##
|
378
397
|
# close dst
|
379
398
|
#
|
@@ -475,15 +494,14 @@ module P2p2
|
|
475
494
|
#
|
476
495
|
def write_dst( dst )
|
477
496
|
dst_info = @dst_infos[ dst ]
|
478
|
-
data = dst_info[ :cache ]
|
479
|
-
from = :cache
|
497
|
+
from, data = :cache, dst_info[ :cache ]
|
480
498
|
|
481
499
|
if data.empty?
|
482
500
|
if dst_info[ :chunks ].any?
|
483
501
|
path = File.join( @dst_chunk_dir, dst_info[ :chunks ].shift )
|
484
502
|
|
485
503
|
begin
|
486
|
-
dst_info[ :cache ] =
|
504
|
+
data = dst_info[ :cache ] = IO.binread( path )
|
487
505
|
File.delete( path )
|
488
506
|
rescue Errno::ENOENT => e
|
489
507
|
puts "#{ Time.new } read #{ path } #{ e.class }"
|
@@ -491,8 +509,7 @@ module P2p2
|
|
491
509
|
return
|
492
510
|
end
|
493
511
|
else
|
494
|
-
data = dst_info[ :wbuff ]
|
495
|
-
from = :wbuff
|
512
|
+
from, data = :wbuff, dst_info[ :wbuff ]
|
496
513
|
end
|
497
514
|
end
|
498
515
|
|
@@ -519,6 +536,7 @@ module P2p2
|
|
519
536
|
# puts "debug2 write dst #{ written }"
|
520
537
|
data = data[ written..-1 ]
|
521
538
|
dst_info[ from ] = data
|
539
|
+
dst_info[ :last_continue_at ] = Time.new
|
522
540
|
end
|
523
541
|
|
524
542
|
##
|
@@ -531,13 +549,13 @@ module P2p2
|
|
531
549
|
return
|
532
550
|
end
|
533
551
|
|
552
|
+
now = Time.new
|
553
|
+
|
534
554
|
# 传ctlmsg
|
535
555
|
while @tund_info[ :ctlmsgs ].any?
|
536
556
|
to_addr, data = @tund_info[ :ctlmsgs ].first
|
537
557
|
|
538
|
-
|
539
|
-
tund.sendmsg( data, 0, to_addr )
|
540
|
-
rescue IO::WaitWritable, Errno::EINTR
|
558
|
+
unless send_data( tund, data, to_addr )
|
541
559
|
return
|
542
560
|
end
|
543
561
|
|
@@ -553,16 +571,15 @@ module P2p2
|
|
553
571
|
data = dst_ext[ :wmems ][ pack_id ]
|
554
572
|
|
555
573
|
if data
|
556
|
-
|
557
|
-
tund.sendmsg( data, 0, @tund_info[ :tun_addr ] )
|
558
|
-
rescue IO::WaitWritable, Errno::EINTR
|
574
|
+
unless send_data( tund, data, @tund_info[ :tun_addr ] )
|
559
575
|
return
|
560
576
|
end
|
577
|
+
|
578
|
+
dst_ext[ :last_continue_at ] = now
|
561
579
|
end
|
562
580
|
end
|
563
581
|
|
564
582
|
@tund_info[ :resendings ].shift
|
565
|
-
return
|
566
583
|
end
|
567
584
|
|
568
585
|
# 若写后达到上限,暂停取写前
|
@@ -578,8 +595,7 @@ module P2p2
|
|
578
595
|
|
579
596
|
# 取写前
|
580
597
|
if @tund_info[ :caches ].any?
|
581
|
-
|
582
|
-
from = :caches
|
598
|
+
datas = @tund_info[ :caches ]
|
583
599
|
elsif @tund_info[ :chunks ].any?
|
584
600
|
path = File.join( @tund_chunk_dir, @tund_info[ :chunks ].shift )
|
585
601
|
|
@@ -600,42 +616,39 @@ module P2p2
|
|
600
616
|
data = data[ ( 12 + pack_size )..-1 ]
|
601
617
|
end
|
602
618
|
|
603
|
-
@tund_info[ :caches ] = caches
|
604
|
-
dst_local_port, pack_id, data = caches.first
|
605
|
-
from = :caches
|
619
|
+
datas = @tund_info[ :caches ] = caches
|
606
620
|
elsif @tund_info[ :wbuffs ].any?
|
607
|
-
|
608
|
-
from = :wbuffs
|
621
|
+
datas = @tund_info[ :wbuffs ]
|
609
622
|
else
|
610
623
|
@writes.delete( tund )
|
611
624
|
return
|
612
625
|
end
|
613
626
|
|
614
|
-
|
627
|
+
while datas.any?
|
628
|
+
dst_local_port, pack_id, data = datas.first
|
629
|
+
dst_ext = @tund_info[ :dst_exts ][ dst_local_port ]
|
615
630
|
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
631
|
+
if dst_ext
|
632
|
+
if pack_id <= CONFUSE_UNTIL
|
633
|
+
data = @custom.encode( data )
|
634
|
+
# puts "debug1 encoded pack #{ pack_id }"
|
635
|
+
end
|
621
636
|
|
622
|
-
|
637
|
+
data = [ [ pack_id, dst_local_port ].pack( 'Q>n' ), data ].join
|
623
638
|
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
639
|
+
unless send_data( tund, data, @tund_info[ :tun_addr ] )
|
640
|
+
return
|
641
|
+
end
|
642
|
+
|
643
|
+
# puts "debug2 written pack #{ pack_id }"
|
644
|
+
dst_ext[ :relay_pack_id ] = pack_id
|
645
|
+
dst_ext[ :wmems ][ pack_id ] = data
|
646
|
+
dst_ext[ :send_ats ][ pack_id ] = now
|
647
|
+
dst_ext[ :last_continue_at ] = now
|
628
648
|
end
|
629
649
|
|
630
|
-
|
631
|
-
now = Time.new
|
632
|
-
dst_ext[ :relay_pack_id ] = pack_id
|
633
|
-
dst_ext[ :wmems ][ pack_id ] = data
|
634
|
-
dst_ext[ :send_ats ][ pack_id ] = now
|
635
|
-
dst_ext[ :last_continue_at ] = now
|
650
|
+
datas.shift
|
636
651
|
end
|
637
|
-
|
638
|
-
@tund_info[ from ].shift
|
639
652
|
end
|
640
653
|
|
641
654
|
##
|
@@ -661,7 +674,7 @@ module P2p2
|
|
661
674
|
|
662
675
|
# puts "debug2 read dst #{ data.inspect }"
|
663
676
|
dst_info = @dst_infos[ dst ]
|
664
|
-
dst_info[ :
|
677
|
+
dst_info[ :last_continue_at ] = Time.new
|
665
678
|
|
666
679
|
if @tund.closed?
|
667
680
|
puts "#{ Time.new } tund closed, close dst"
|
@@ -739,8 +752,7 @@ module P2p2
|
|
739
752
|
cache: '', # 块读出缓存
|
740
753
|
chunks: [], # 块队列,写前达到块大小时结一个块 filename
|
741
754
|
spring: 0, # 块后缀,结块时,如果块队列不为空,则自增,为空,则置为0
|
742
|
-
|
743
|
-
last_recv_at: nil, # 上一次收到流量的时间,过期关闭
|
755
|
+
last_continue_at: Time.new, # 上一次发生流量的时间
|
744
756
|
is_closing: false # 是否准备关闭
|
745
757
|
}
|
746
758
|
add_read( dst, :dst )
|
@@ -757,7 +769,7 @@ module P2p2
|
|
757
769
|
is_src_closed: false, # src是否已关闭
|
758
770
|
biggest_src_pack_id: 0, # src最大包号码
|
759
771
|
completed_pack_id: 0, # 完成到几(对面收到几)
|
760
|
-
last_continue_at: Time.new #
|
772
|
+
last_continue_at: Time.new # 上一次发生流量的时间
|
761
773
|
}
|
762
774
|
end
|
763
775
|
|
data/lib/p2p2/p2.rb
CHANGED
data/lib/p2p2/p2_worker.rb
CHANGED
@@ -100,14 +100,14 @@ module P2p2
|
|
100
100
|
else
|
101
101
|
@tun_info[ :src_exts ].each do | src_id, src_ext |
|
102
102
|
if src_ext[ :src ].closed? && ( now - src_ext[ :last_continue_at ] > EXPIRE_AFTER )
|
103
|
-
puts "#{ Time.new } expire src ext
|
103
|
+
puts "#{ Time.new } expire src ext"
|
104
104
|
del_src_ext( src_id )
|
105
105
|
end
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
109
109
|
@src_infos.each do | src, src_info |
|
110
|
-
if
|
110
|
+
if now - src_info[ :last_continue_at ] > EXPIRE_AFTER
|
111
111
|
puts "#{ Time.new } expire src"
|
112
112
|
set_is_closing( src )
|
113
113
|
end
|
@@ -119,7 +119,7 @@ module P2p2
|
|
119
119
|
# puts "debug2 heartbeat"
|
120
120
|
add_tun_ctlmsg( pack_a_heartbeat )
|
121
121
|
next_tick
|
122
|
-
elsif now - @tun_info[ :
|
122
|
+
elsif now - @tun_info[ :created_at ] > EXPIRE_NEW
|
123
123
|
# no tund addr
|
124
124
|
puts "#{ Time.new } expire new tun"
|
125
125
|
set_is_closing( @tun )
|
@@ -263,7 +263,7 @@ module P2p2
|
|
263
263
|
@tun = tun
|
264
264
|
@tun_info = tun_info
|
265
265
|
add_read( tun, :tun )
|
266
|
-
add_tun_ctlmsg( @room, @p2pd_addr )
|
266
|
+
add_tun_ctlmsg( [ '2', @room ].join, @p2pd_addr )
|
267
267
|
end
|
268
268
|
|
269
269
|
##
|
@@ -402,6 +402,23 @@ module P2p2
|
|
402
402
|
end
|
403
403
|
end
|
404
404
|
|
405
|
+
##
|
406
|
+
# send data
|
407
|
+
#
|
408
|
+
def send_data( tun, data, to_addr )
|
409
|
+
begin
|
410
|
+
tun.sendmsg( data, 0, to_addr )
|
411
|
+
rescue IO::WaitWritable, Errno::EINTR
|
412
|
+
return false
|
413
|
+
rescue Errno::EHOSTUNREACH, Errno::ENETUNREACH, Errno::ENETDOWN => e
|
414
|
+
puts "#{ Time.new } #{ e.class }, close tun"
|
415
|
+
close_tun( tun )
|
416
|
+
return false
|
417
|
+
end
|
418
|
+
|
419
|
+
true
|
420
|
+
end
|
421
|
+
|
405
422
|
##
|
406
423
|
# close src
|
407
424
|
#
|
@@ -503,15 +520,14 @@ module P2p2
|
|
503
520
|
#
|
504
521
|
def write_src( src )
|
505
522
|
src_info = @src_infos[ src ]
|
506
|
-
data = src_info[ :cache ]
|
507
|
-
from = :cache
|
523
|
+
from, data = :cache, src_info[ :cache ]
|
508
524
|
|
509
525
|
if data.empty?
|
510
526
|
if src_info[ :chunks ].any?
|
511
527
|
path = File.join( @src_chunk_dir, src_info[ :chunks ].shift )
|
512
528
|
|
513
529
|
begin
|
514
|
-
src_info[ :cache ] =
|
530
|
+
data = src_info[ :cache ] = IO.binread( path )
|
515
531
|
File.delete( path )
|
516
532
|
rescue Errno::ENOENT => e
|
517
533
|
puts "#{ Time.new } read #{ path } #{ e.class }"
|
@@ -519,8 +535,7 @@ module P2p2
|
|
519
535
|
return
|
520
536
|
end
|
521
537
|
else
|
522
|
-
data = src_info[ :wbuff ]
|
523
|
-
from = :wbuff
|
538
|
+
from, data = :wbuff, src_info[ :wbuff ]
|
524
539
|
end
|
525
540
|
end
|
526
541
|
|
@@ -546,6 +561,7 @@ module P2p2
|
|
546
561
|
# puts "debug2 write src #{ written }"
|
547
562
|
data = data[ written..-1 ]
|
548
563
|
src_info[ from ] = data
|
564
|
+
src_info[ :last_continue_at ] = Time.new
|
549
565
|
end
|
550
566
|
|
551
567
|
##
|
@@ -557,13 +573,13 @@ module P2p2
|
|
557
573
|
return
|
558
574
|
end
|
559
575
|
|
576
|
+
now = Time.new
|
577
|
+
|
560
578
|
# 传ctlmsg
|
561
579
|
while @tun_info[ :ctlmsgs ].any?
|
562
580
|
to_addr, data = @tun_info[ :ctlmsgs ].first
|
563
581
|
|
564
|
-
|
565
|
-
tun.sendmsg( data, 0, to_addr )
|
566
|
-
rescue IO::WaitWritable, Errno::EINTR
|
582
|
+
unless send_data( tun, data, to_addr )
|
567
583
|
return
|
568
584
|
end
|
569
585
|
|
@@ -579,16 +595,15 @@ module P2p2
|
|
579
595
|
data = src_ext[ :wmems ][ pack_id ]
|
580
596
|
|
581
597
|
if data
|
582
|
-
|
583
|
-
tun.sendmsg( data, 0, @tun_info[ :tund_addr ] )
|
584
|
-
rescue IO::WaitWritable, Errno::EINTR
|
598
|
+
unless send_data( tun, data, @tun_info[ :tund_addr ] )
|
585
599
|
return
|
586
600
|
end
|
601
|
+
|
602
|
+
src_ext[ :last_continue_at ] = now
|
587
603
|
end
|
588
604
|
end
|
589
605
|
|
590
606
|
@tun_info[ :resendings ].shift
|
591
|
-
return
|
592
607
|
end
|
593
608
|
|
594
609
|
# 若写后达到上限,暂停取写前
|
@@ -604,8 +619,7 @@ module P2p2
|
|
604
619
|
|
605
620
|
# 取写前
|
606
621
|
if @tun_info[ :caches ].any?
|
607
|
-
|
608
|
-
from = :caches
|
622
|
+
datas = @tun_info[ :caches ]
|
609
623
|
elsif @tun_info[ :chunks ].any?
|
610
624
|
path = File.join( @tun_chunk_dir, @tun_info[ :chunks ].shift )
|
611
625
|
|
@@ -626,42 +640,39 @@ module P2p2
|
|
626
640
|
data = data[ ( 18 + pack_size )..-1 ]
|
627
641
|
end
|
628
642
|
|
629
|
-
@tun_info[ :caches ] = caches
|
630
|
-
src_id, pack_id, data = caches.first
|
631
|
-
from = :caches
|
643
|
+
datas = @tun_info[ :caches ] = caches
|
632
644
|
elsif @tun_info[ :wbuffs ].any?
|
633
|
-
|
634
|
-
from = :wbuffs
|
645
|
+
datas = @tun_info[ :wbuffs ]
|
635
646
|
else
|
636
647
|
@writes.delete( tun )
|
637
648
|
return
|
638
649
|
end
|
639
650
|
|
640
|
-
|
651
|
+
while datas.any?
|
652
|
+
src_id, pack_id, data = datas.first
|
653
|
+
src_ext = @tun_info[ :src_exts ][ src_id ]
|
641
654
|
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
|
646
|
-
|
655
|
+
if src_ext
|
656
|
+
if pack_id <= CONFUSE_UNTIL
|
657
|
+
data = @custom.encode( data )
|
658
|
+
# puts "debug1 encoded pack #{ pack_id }"
|
659
|
+
end
|
647
660
|
|
648
|
-
|
661
|
+
data = [ [ pack_id, src_id ].pack( 'Q>Q>' ), data ].join
|
649
662
|
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
663
|
+
unless send_data( tun, data, @tun_info[ :tund_addr ] )
|
664
|
+
return
|
665
|
+
end
|
666
|
+
|
667
|
+
# puts "debug2 written pack #{ pack_id }"
|
668
|
+
src_ext[ :relay_pack_id ] = pack_id
|
669
|
+
src_ext[ :wmems ][ pack_id ] = data
|
670
|
+
src_ext[ :send_ats ][ pack_id ] = now
|
671
|
+
src_ext[ :last_continue_at ] = now
|
654
672
|
end
|
655
673
|
|
656
|
-
|
657
|
-
now = Time.new
|
658
|
-
src_ext[ :relay_pack_id ] = pack_id
|
659
|
-
src_ext[ :wmems ][ pack_id ] = data
|
660
|
-
src_ext[ :send_ats ][ pack_id ] = now
|
661
|
-
src_ext[ :last_continue_at ] = now
|
674
|
+
datas.shift
|
662
675
|
end
|
663
|
-
|
664
|
-
@tun_info[ from ].shift
|
665
676
|
end
|
666
677
|
|
667
678
|
##
|
@@ -685,16 +696,15 @@ module P2p2
|
|
685
696
|
# puts "debug1 accept a src #{ addrinfo.inspect } #{ id }"
|
686
697
|
|
687
698
|
@src_infos[ src ] = {
|
688
|
-
id: id,
|
689
|
-
biggest_pack_id: 0,
|
690
|
-
rbuffs: [],
|
691
|
-
wbuff: '',
|
692
|
-
cache: '',
|
693
|
-
chunks: [],
|
694
|
-
spring: 0,
|
695
|
-
|
696
|
-
|
697
|
-
is_closing: false # 是否准备关闭
|
699
|
+
id: id, # id
|
700
|
+
biggest_pack_id: 0, # 最大包号码
|
701
|
+
rbuffs: [], # p1端dst未准备好,暂存流量 [ pack_id, data ]
|
702
|
+
wbuff: '', # 写前
|
703
|
+
cache: '', # 块读出缓存
|
704
|
+
chunks: [], # 块队列,写前达到块大小时结一个块 filename
|
705
|
+
spring: 0, # 块后缀,结块时,如果块队列不为空,则自增,为空,则置为0
|
706
|
+
last_continue_at: Time.new, # 上一次发生流量的时间
|
707
|
+
is_closing: false # 是否准备关闭
|
698
708
|
}
|
699
709
|
|
700
710
|
add_read( src, :src )
|
@@ -714,7 +724,7 @@ module P2p2
|
|
714
724
|
is_dst_closed: false, # dst是否已关闭
|
715
725
|
biggest_dst_pack_id: 0, # dst最大包号码
|
716
726
|
completed_pack_id: 0, # 完成到几(对面收到几)
|
717
|
-
last_continue_at: Time.new #
|
727
|
+
last_continue_at: Time.new # 上一次发生流量的时间
|
718
728
|
}
|
719
729
|
|
720
730
|
@tun_info[ :src_exts ][ id ] = src_ext
|
@@ -738,7 +748,7 @@ module P2p2
|
|
738
748
|
|
739
749
|
# puts "debug2 read src #{ data.inspect }"
|
740
750
|
src_info = @src_infos[ src ]
|
741
|
-
src_info[ :
|
751
|
+
src_info[ :last_continue_at ] = Time.new
|
742
752
|
src_id = src_info[ :id ]
|
743
753
|
src_ext = @tun_info[ :src_exts ][ src_id ]
|
744
754
|
|
data/lib/p2p2/p2pd.rb
CHANGED
data/lib/p2p2/p2pd_worker.rb
CHANGED
@@ -32,17 +32,21 @@ module P2p2
|
|
32
32
|
data, addrinfo, rflags, *controls = p2pd.recvmsg
|
33
33
|
return if ( data.bytesize == 1 ) || ( data.bytesize > 255 ) || ( data =~ /\/|\.|\ / )
|
34
34
|
|
35
|
+
if data[0] == '2'
|
36
|
+
is_p2 = true
|
37
|
+
data = data[ 1..-1 ]
|
38
|
+
else
|
39
|
+
is_p2 = false
|
40
|
+
end
|
41
|
+
|
35
42
|
from_addr = addrinfo.to_sockaddr
|
36
43
|
room_path = File.join( @p2pd_tmp_dir, data.gsub( "\u0000" , '' ) )
|
37
44
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
if Time.new - File.mtime( room_path ) > EXPIRE_AFTER
|
45
|
-
puts "#{ Time.new } overwrite #{ room_path } #{ addrinfo.inspect }"
|
45
|
+
if is_p2
|
46
|
+
unless File.exist?( room_path )
|
47
|
+
return
|
48
|
+
end
|
49
|
+
else
|
46
50
|
write_room( room_path, from_addr )
|
47
51
|
return
|
48
52
|
end
|
@@ -50,13 +54,9 @@ module P2p2
|
|
50
54
|
op_addr = IO.binread( room_path )
|
51
55
|
op_addrinfo = Addrinfo.new( op_addr )
|
52
56
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
puts "#{ Time.new } paired #{ addrinfo.inspect } #{ op_addrinfo.inspect }"
|
57
|
-
send_pack( [ [ 0, PEER_ADDR ].pack( 'Q>C' ), op_addr ].join, from_addr )
|
58
|
-
send_pack( [ [ 0, PEER_ADDR ].pack( 'Q>C' ), from_addr ].join, op_addr )
|
59
|
-
end
|
57
|
+
puts "#{ Time.new } paired #{ addrinfo.inspect } #{ op_addrinfo.inspect }"
|
58
|
+
send_pack( [ [ 0, PEER_ADDR ].pack( 'Q>C' ), op_addr ].join, from_addr )
|
59
|
+
send_pack( [ [ 0, PEER_ADDR ].pack( 'Q>C' ), from_addr ].join, op_addr )
|
60
60
|
end
|
61
61
|
|
62
62
|
def write_room( room_path, data )
|
data/lib/p2p2/version.rb
CHANGED
data/p2p2.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["qqtakafan@gmail.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{p2p}
|
13
|
-
spec.description = %q{
|
13
|
+
spec.description = %q{p2p通道。nat穿透。}
|
14
14
|
spec.homepage = "https://github.com/takafan/p2p2"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: p2p2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.25.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- takafan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
13
|
+
description: p2p通道。nat穿透。
|
14
14
|
email:
|
15
15
|
- qqtakafan@gmail.com
|
16
16
|
executables: []
|
@@ -49,8 +49,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
49
49
|
- !ruby/object:Gem::Version
|
50
50
|
version: '0'
|
51
51
|
requirements: []
|
52
|
-
|
53
|
-
rubygems_version: 2.7.6.2
|
52
|
+
rubygems_version: 3.1.2
|
54
53
|
signing_key:
|
55
54
|
specification_version: 4
|
56
55
|
summary: p2p
|