p2p2 0.18.0 → 0.23.0
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.
- checksums.yaml +4 -4
- data/lib/p2p2/head.rb +3 -2
- data/lib/p2p2/p1_worker.rb +67 -64
- data/lib/p2p2/p2_worker.rb +61 -44
- data/lib/p2p2/p2pd_worker.rb +15 -15
- data/lib/p2p2/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 93622e13a1c4a94debd120c4295bed86f0d451f83f05ecfc4bb2b29f63320a83
|
|
4
|
+
data.tar.gz: edcf0aefb969653a5b73201722ac2ab61a24488f5124a0cba3d78f2c0fc17073
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 558629edb45e53c9a9d0f1ad964e91b3b89c313181e8bbce2477ad0fbdad7aae43db37f59235340e4004dd6390b555817c513b88417c9e95fa9fbcdb2083e772
|
|
7
|
+
data.tar.gz: 387354b5932fb4a7994a1970e649521d357db94e7eb6521fa33991ccd25a4436c2064e43508e51adeb5827871f309cb41dbe0caf2c22fa18a375d269e8606232
|
data/lib/p2p2/head.rb
CHANGED
|
@@ -6,12 +6,13 @@ module P2p2
|
|
|
6
6
|
RESUME_BELOW = 50_000 # 降到多少以下恢复写
|
|
7
7
|
EXPIRE_NEW = 10 # 创建之后多久没有流量进来,过期
|
|
8
8
|
EXPIRE_AFTER = 300 # 多久没有新流量,过期
|
|
9
|
-
CHECK_EXPIRE_INTERVAL =
|
|
9
|
+
CHECK_EXPIRE_INTERVAL = 60 # 检查过期间隔
|
|
10
10
|
STATUS_INTERVAL = 0.5 # 发送状态间隔
|
|
11
11
|
SEND_STATUS_UNTIL = 10 # 持续的告之对面状态,直到没有流量往来,持续多少秒
|
|
12
12
|
BREAK_SEND_MISS = 10_000 # miss包个数上限,达到上限忽略要后面的段,可控碎片缓存
|
|
13
13
|
CONFUSE_UNTIL = 5 # 混淆前几个包
|
|
14
|
-
|
|
14
|
+
HEARTBEAT_INTERVAL = 5 # 心跳间隔
|
|
15
|
+
UPDATE_ROOM_INTERVAL = 60 # 刷新房间间隔
|
|
15
16
|
PEER_ADDR = 1
|
|
16
17
|
HEARTBEAT = 2
|
|
17
18
|
A_NEW_SOURCE = 3
|
data/lib/p2p2/p1_worker.rb
CHANGED
|
@@ -28,8 +28,7 @@ module P2p2
|
|
|
28
28
|
#
|
|
29
29
|
def looping
|
|
30
30
|
puts "#{ Time.new } looping"
|
|
31
|
-
|
|
32
|
-
loop_check_expire
|
|
31
|
+
loop_heartbeat
|
|
33
32
|
loop_check_status
|
|
34
33
|
|
|
35
34
|
loop do
|
|
@@ -80,76 +79,65 @@ module P2p2
|
|
|
80
79
|
private
|
|
81
80
|
|
|
82
81
|
##
|
|
83
|
-
# loop
|
|
82
|
+
# loop heartbeat
|
|
84
83
|
#
|
|
85
|
-
def
|
|
84
|
+
def loop_heartbeat( check_at = Time.new )
|
|
86
85
|
Thread.new do
|
|
87
86
|
loop do
|
|
88
|
-
sleep
|
|
87
|
+
sleep HEARTBEAT_INTERVAL
|
|
89
88
|
|
|
90
89
|
@mutex.synchronize do
|
|
91
|
-
if !@tund.closed? && @tund_info[ :peer_addr ].nil?
|
|
92
|
-
now = Time.new
|
|
93
|
-
|
|
94
|
-
if now - update_at >= 60
|
|
95
|
-
data = @room
|
|
96
|
-
update_at = now
|
|
97
|
-
else
|
|
98
|
-
data = [ rand( 128 ) ].pack( 'C' )
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
add_tund_ctlmsg( data, @p2pd_addr )
|
|
102
|
-
next_tick
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
##
|
|
110
|
-
# loop check expire
|
|
111
|
-
#
|
|
112
|
-
def loop_check_expire
|
|
113
|
-
Thread.new do
|
|
114
|
-
loop do
|
|
115
|
-
sleep CHECK_EXPIRE_INTERVAL
|
|
116
|
-
|
|
117
|
-
@mutex.synchronize do
|
|
118
|
-
need_trigger = false
|
|
119
90
|
now = Time.new
|
|
120
91
|
|
|
121
|
-
|
|
122
|
-
if
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
92
|
+
unless @tund.closed?
|
|
93
|
+
if @tund_info[ :peer_addr ]
|
|
94
|
+
if @tund_info[ :tun_addr ]
|
|
95
|
+
if now - check_at >= CHECK_EXPIRE_INTERVAL
|
|
96
|
+
if now - @tund_info[ :last_recv_at ] > EXPIRE_AFTER
|
|
97
|
+
puts "#{ Time.new } expire tund"
|
|
98
|
+
set_is_closing( @tund )
|
|
99
|
+
else
|
|
100
|
+
@tund_info[ :dst_exts ].each do | dst_local_port, dst_ext |
|
|
101
|
+
if dst_ext[ :dst ].closed? && ( now - dst_ext[ :last_continue_at ] > EXPIRE_AFTER )
|
|
102
|
+
puts "#{ Time.new } expire dst ext"
|
|
103
|
+
del_dst_ext( dst_local_port )
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
@dst_infos.each do | dst, dst_info |
|
|
109
|
+
if now - dst_info[ :last_continue_at ] > EXPIRE_AFTER
|
|
110
|
+
puts "#{ Time.new } expire dst"
|
|
111
|
+
set_is_closing( dst )
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
check_at = now
|
|
133
116
|
end
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
117
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
118
|
+
# puts "debug2 heartbeat"
|
|
119
|
+
add_tund_ctlmsg( pack_a_heartbeat )
|
|
120
|
+
next_tick
|
|
121
|
+
elsif now - @tund_info[ :created_at ] > EXPIRE_NEW
|
|
122
|
+
# no tun addr
|
|
123
|
+
puts "#{ Time.new } expire new tund"
|
|
124
|
+
set_is_closing( @tund )
|
|
125
|
+
next_tick
|
|
126
|
+
end
|
|
127
|
+
else
|
|
128
|
+
# no peer addr
|
|
129
|
+
if now - check_at >= UPDATE_ROOM_INTERVAL
|
|
130
|
+
data = @room
|
|
131
|
+
check_at = now
|
|
132
|
+
else
|
|
133
|
+
data = [ rand( 128 ) ].pack( 'C' )
|
|
134
|
+
end
|
|
142
135
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
need_trigger = true
|
|
136
|
+
# puts "debug2 update room"
|
|
137
|
+
add_tund_ctlmsg( data, @p2pd_addr )
|
|
138
|
+
next_tick
|
|
147
139
|
end
|
|
148
140
|
end
|
|
149
|
-
|
|
150
|
-
if need_trigger
|
|
151
|
-
next_tick
|
|
152
|
-
end
|
|
153
141
|
end
|
|
154
142
|
end
|
|
155
143
|
end
|
|
@@ -261,6 +249,8 @@ module P2p2
|
|
|
261
249
|
# is match tun addr
|
|
262
250
|
#
|
|
263
251
|
def is_match_tun_addr( addrinfo )
|
|
252
|
+
return false unless @tund_info[ :tun_addr ]
|
|
253
|
+
|
|
264
254
|
from_addr = addrinfo.to_sockaddr
|
|
265
255
|
|
|
266
256
|
if from_addr != @tund_info[ :tun_addr ]
|
|
@@ -269,6 +259,7 @@ module P2p2
|
|
|
269
259
|
end
|
|
270
260
|
|
|
271
261
|
@tund_info[ :last_recv_at ] = Time.new
|
|
262
|
+
|
|
272
263
|
true
|
|
273
264
|
end
|
|
274
265
|
|
|
@@ -528,6 +519,7 @@ module P2p2
|
|
|
528
519
|
# puts "debug2 write dst #{ written }"
|
|
529
520
|
data = data[ written..-1 ]
|
|
530
521
|
dst_info[ from ] = data
|
|
522
|
+
dst_info[ :last_continue_at ] = Time.new
|
|
531
523
|
end
|
|
532
524
|
|
|
533
525
|
##
|
|
@@ -548,6 +540,10 @@ module P2p2
|
|
|
548
540
|
tund.sendmsg( data, 0, to_addr )
|
|
549
541
|
rescue IO::WaitWritable, Errno::EINTR
|
|
550
542
|
return
|
|
543
|
+
rescue Errno::EHOSTUNREACH, Errno::ENETUNREACH => e
|
|
544
|
+
puts "#{ Time.new } #{ e.class }, close tund"
|
|
545
|
+
close_tund( tund )
|
|
546
|
+
return
|
|
551
547
|
end
|
|
552
548
|
|
|
553
549
|
@tund_info[ :ctlmsgs ].shift
|
|
@@ -566,6 +562,10 @@ module P2p2
|
|
|
566
562
|
tund.sendmsg( data, 0, @tund_info[ :tun_addr ] )
|
|
567
563
|
rescue IO::WaitWritable, Errno::EINTR
|
|
568
564
|
return
|
|
565
|
+
rescue Errno::EHOSTUNREACH, Errno::ENETUNREACH => e
|
|
566
|
+
puts "#{ Time.new } #{ e.class }, close tund"
|
|
567
|
+
close_tund( tund )
|
|
568
|
+
return
|
|
569
569
|
end
|
|
570
570
|
end
|
|
571
571
|
end
|
|
@@ -634,6 +634,10 @@ module P2p2
|
|
|
634
634
|
tund.sendmsg( data, 0, @tund_info[ :tun_addr ] )
|
|
635
635
|
rescue IO::WaitWritable, Errno::EINTR
|
|
636
636
|
return
|
|
637
|
+
rescue Errno::EHOSTUNREACH, Errno::ENETUNREACH => e
|
|
638
|
+
puts "#{ Time.new } #{ e.class }, close tund"
|
|
639
|
+
close_tund( tund )
|
|
640
|
+
return
|
|
637
641
|
end
|
|
638
642
|
|
|
639
643
|
# puts "debug2 written pack #{ pack_id }"
|
|
@@ -670,7 +674,7 @@ module P2p2
|
|
|
670
674
|
|
|
671
675
|
# puts "debug2 read dst #{ data.inspect }"
|
|
672
676
|
dst_info = @dst_infos[ dst ]
|
|
673
|
-
dst_info[ :
|
|
677
|
+
dst_info[ :last_continue_at ] = Time.new
|
|
674
678
|
|
|
675
679
|
if @tund.closed?
|
|
676
680
|
puts "#{ Time.new } tund closed, close dst"
|
|
@@ -748,8 +752,7 @@ module P2p2
|
|
|
748
752
|
cache: '', # 块读出缓存
|
|
749
753
|
chunks: [], # 块队列,写前达到块大小时结一个块 filename
|
|
750
754
|
spring: 0, # 块后缀,结块时,如果块队列不为空,则自增,为空,则置为0
|
|
751
|
-
|
|
752
|
-
last_recv_at: nil, # 上一次收到流量的时间,过期关闭
|
|
755
|
+
last_continue_at: Time.new, # 上一次发生流量的时间
|
|
753
756
|
is_closing: false # 是否准备关闭
|
|
754
757
|
}
|
|
755
758
|
add_read( dst, :dst )
|
|
@@ -766,7 +769,7 @@ module P2p2
|
|
|
766
769
|
is_src_closed: false, # src是否已关闭
|
|
767
770
|
biggest_src_pack_id: 0, # src最大包号码
|
|
768
771
|
completed_pack_id: 0, # 完成到几(对面收到几)
|
|
769
|
-
last_continue_at: Time.new #
|
|
772
|
+
last_continue_at: Time.new # 上一次发生流量的时间
|
|
770
773
|
}
|
|
771
774
|
end
|
|
772
775
|
|
data/lib/p2p2/p2_worker.rb
CHANGED
|
@@ -28,7 +28,7 @@ module P2p2
|
|
|
28
28
|
#
|
|
29
29
|
def looping
|
|
30
30
|
puts "#{ Time.new } looping"
|
|
31
|
-
|
|
31
|
+
loop_heartbeat
|
|
32
32
|
loop_check_status
|
|
33
33
|
|
|
34
34
|
loop do
|
|
@@ -81,49 +81,51 @@ module P2p2
|
|
|
81
81
|
private
|
|
82
82
|
|
|
83
83
|
##
|
|
84
|
-
# loop
|
|
84
|
+
# loop heartbeat
|
|
85
85
|
#
|
|
86
|
-
def
|
|
86
|
+
def loop_heartbeat( check_at = Time.new )
|
|
87
87
|
Thread.new do
|
|
88
88
|
loop do
|
|
89
|
-
sleep
|
|
89
|
+
sleep HEARTBEAT_INTERVAL
|
|
90
90
|
|
|
91
91
|
@mutex.synchronize do
|
|
92
|
-
need_trigger = false
|
|
93
92
|
now = Time.new
|
|
94
93
|
|
|
95
|
-
if @tun && !@tun.closed? && @tun_info[ :
|
|
96
|
-
if
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
94
|
+
if @tun && !@tun.closed? && @tun_info[ :peer_addr ]
|
|
95
|
+
if @tun_info[ :tund_addr ]
|
|
96
|
+
if now - check_at >= CHECK_EXPIRE_INTERVAL
|
|
97
|
+
if now - @tun_info[ :last_recv_at ] > EXPIRE_AFTER
|
|
98
|
+
puts "#{ Time.new } expire tun"
|
|
99
|
+
set_is_closing( @tun )
|
|
100
|
+
else
|
|
101
|
+
@tun_info[ :src_exts ].each do | src_id, src_ext |
|
|
102
|
+
if src_ext[ :src ].closed? && ( now - src_ext[ :last_continue_at ] > EXPIRE_AFTER )
|
|
103
|
+
puts "#{ Time.new } expire src ext"
|
|
104
|
+
del_src_ext( src_id )
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
107
|
end
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
108
|
|
|
111
|
-
|
|
112
|
-
|
|
109
|
+
@src_infos.each do | src, src_info |
|
|
110
|
+
if now - src_info[ :last_continue_at ] > EXPIRE_AFTER
|
|
111
|
+
puts "#{ Time.new } expire src"
|
|
112
|
+
set_is_closing( src )
|
|
113
|
+
end
|
|
114
|
+
end
|
|
113
115
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
+
check_at = now
|
|
117
|
+
end
|
|
116
118
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
# puts "debug2 heartbeat"
|
|
120
|
+
add_tun_ctlmsg( pack_a_heartbeat )
|
|
121
|
+
next_tick
|
|
122
|
+
elsif now - @tun_info[ :created_at ] > EXPIRE_NEW
|
|
123
|
+
# no tund addr
|
|
124
|
+
puts "#{ Time.new } expire new tun"
|
|
125
|
+
set_is_closing( @tun )
|
|
126
|
+
next_tick
|
|
121
127
|
end
|
|
122
128
|
end
|
|
123
|
-
|
|
124
|
-
if need_trigger
|
|
125
|
-
next_tick
|
|
126
|
-
end
|
|
127
129
|
end
|
|
128
130
|
end
|
|
129
131
|
end
|
|
@@ -261,7 +263,7 @@ module P2p2
|
|
|
261
263
|
@tun = tun
|
|
262
264
|
@tun_info = tun_info
|
|
263
265
|
add_read( tun, :tun )
|
|
264
|
-
add_tun_ctlmsg( @room, @p2pd_addr )
|
|
266
|
+
add_tun_ctlmsg( [ '2', @room ].join, @p2pd_addr )
|
|
265
267
|
end
|
|
266
268
|
|
|
267
269
|
##
|
|
@@ -275,6 +277,8 @@ module P2p2
|
|
|
275
277
|
# is match tund addr
|
|
276
278
|
#
|
|
277
279
|
def is_match_tund_addr( addrinfo )
|
|
280
|
+
return false unless @tun_info[ :tund_addr ]
|
|
281
|
+
|
|
278
282
|
from_addr = addrinfo.to_sockaddr
|
|
279
283
|
|
|
280
284
|
if from_addr != @tun_info[ :tund_addr ]
|
|
@@ -283,6 +287,7 @@ module P2p2
|
|
|
283
287
|
end
|
|
284
288
|
|
|
285
289
|
@tun_info[ :last_recv_at ] = Time.new
|
|
290
|
+
|
|
286
291
|
true
|
|
287
292
|
end
|
|
288
293
|
|
|
@@ -541,6 +546,7 @@ module P2p2
|
|
|
541
546
|
# puts "debug2 write src #{ written }"
|
|
542
547
|
data = data[ written..-1 ]
|
|
543
548
|
src_info[ from ] = data
|
|
549
|
+
src_info[ :last_continue_at ] = Time.new
|
|
544
550
|
end
|
|
545
551
|
|
|
546
552
|
##
|
|
@@ -560,6 +566,10 @@ module P2p2
|
|
|
560
566
|
tun.sendmsg( data, 0, to_addr )
|
|
561
567
|
rescue IO::WaitWritable, Errno::EINTR
|
|
562
568
|
return
|
|
569
|
+
rescue Errno::EHOSTUNREACH, Errno::ENETUNREACH => e
|
|
570
|
+
puts "#{ Time.new } #{ e.class }, close tun"
|
|
571
|
+
close_tun( tun )
|
|
572
|
+
return
|
|
563
573
|
end
|
|
564
574
|
|
|
565
575
|
@tun_info[ :ctlmsgs ].shift
|
|
@@ -578,6 +588,10 @@ module P2p2
|
|
|
578
588
|
tun.sendmsg( data, 0, @tun_info[ :tund_addr ] )
|
|
579
589
|
rescue IO::WaitWritable, Errno::EINTR
|
|
580
590
|
return
|
|
591
|
+
rescue Errno::EHOSTUNREACH, Errno::ENETUNREACH => e
|
|
592
|
+
puts "#{ Time.new } #{ e.class }, close tun"
|
|
593
|
+
close_tun( tun )
|
|
594
|
+
return
|
|
581
595
|
end
|
|
582
596
|
end
|
|
583
597
|
end
|
|
@@ -646,6 +660,10 @@ module P2p2
|
|
|
646
660
|
tun.sendmsg( data, 0, @tun_info[ :tund_addr ] )
|
|
647
661
|
rescue IO::WaitWritable, Errno::EINTR
|
|
648
662
|
return
|
|
663
|
+
rescue Errno::EHOSTUNREACH, Errno::ENETUNREACH => e
|
|
664
|
+
puts "#{ Time.new } #{ e.class }, close tun"
|
|
665
|
+
close_tun( tun )
|
|
666
|
+
return
|
|
649
667
|
end
|
|
650
668
|
|
|
651
669
|
# puts "debug2 written pack #{ pack_id }"
|
|
@@ -680,16 +698,15 @@ module P2p2
|
|
|
680
698
|
# puts "debug1 accept a src #{ addrinfo.inspect } #{ id }"
|
|
681
699
|
|
|
682
700
|
@src_infos[ src ] = {
|
|
683
|
-
id: id,
|
|
684
|
-
biggest_pack_id: 0,
|
|
685
|
-
rbuffs: [],
|
|
686
|
-
wbuff: '',
|
|
687
|
-
cache: '',
|
|
688
|
-
chunks: [],
|
|
689
|
-
spring: 0,
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
is_closing: false # 是否准备关闭
|
|
701
|
+
id: id, # id
|
|
702
|
+
biggest_pack_id: 0, # 最大包号码
|
|
703
|
+
rbuffs: [], # p1端dst未准备好,暂存流量 [ pack_id, data ]
|
|
704
|
+
wbuff: '', # 写前
|
|
705
|
+
cache: '', # 块读出缓存
|
|
706
|
+
chunks: [], # 块队列,写前达到块大小时结一个块 filename
|
|
707
|
+
spring: 0, # 块后缀,结块时,如果块队列不为空,则自增,为空,则置为0
|
|
708
|
+
last_continue_at: Time.new, # 上一次发生流量的时间
|
|
709
|
+
is_closing: false # 是否准备关闭
|
|
693
710
|
}
|
|
694
711
|
|
|
695
712
|
add_read( src, :src )
|
|
@@ -709,7 +726,7 @@ module P2p2
|
|
|
709
726
|
is_dst_closed: false, # dst是否已关闭
|
|
710
727
|
biggest_dst_pack_id: 0, # dst最大包号码
|
|
711
728
|
completed_pack_id: 0, # 完成到几(对面收到几)
|
|
712
|
-
last_continue_at: Time.new #
|
|
729
|
+
last_continue_at: Time.new # 上一次发生流量的时间
|
|
713
730
|
}
|
|
714
731
|
|
|
715
732
|
@tun_info[ :src_exts ][ id ] = src_ext
|
|
@@ -733,7 +750,7 @@ module P2p2
|
|
|
733
750
|
|
|
734
751
|
# puts "debug2 read src #{ data.inspect }"
|
|
735
752
|
src_info = @src_infos[ src ]
|
|
736
|
-
src_info[ :
|
|
753
|
+
src_info[ :last_continue_at ] = Time.new
|
|
737
754
|
src_id = src_info[ :id ]
|
|
738
755
|
src_ext = @tun_info[ :src_exts ][ src_id ]
|
|
739
756
|
|
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
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: p2p2
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.23.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-07-
|
|
11
|
+
date: 2020-07-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: 内网里的任意应用,访问另一个内网里的应用服务端。
|
|
14
14
|
email:
|