p2p2 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a8d2cfcbc87835a4412869ae872fb7cba49c48b8e4f94c81cf5678b39f34746
4
- data.tar.gz: c39358930d074c99c8260c9207d821ab6f94f6bb424cc0d32af0165c1218d196
3
+ metadata.gz: c0ed72836f10cc9afc6e1cadf43b2e2c817a86c4ea1c3519f1c8c028f361b792
4
+ data.tar.gz: f0040b2538df25c2b68d96c4341dacd984bacdf66d07f8743589bbd24b286312
5
5
  SHA512:
6
- metadata.gz: 6c64ac875943bafca20918e9a44a8588ddc77cff74ce52965facf4014fa79c87e8b7fb95164419bed4c015d90765330d2f4700b04c1cafe33c08cc4483f4e482
7
- data.tar.gz: ce6fe66c73e8bbc676ac8d23c1de988c89dbcead089fc6c4c7ae65845954f48306926c6beb5d6abc8d3f07bf8f8ec2c4e2ea1b0694830530887b334be14bc855
6
+ metadata.gz: 3bbad24d31ba85bfd00c91cedfcea41f51097bfd2e7ddb44f631605a0ac36b497432667d78d9dd12bcef886c33b9b881e941bf4357d4819cb98ecc10070fc1d0
7
+ data.tar.gz: a06e1edf7702560b9e5b61e59937e11ec90f89a11015d1ddfc2429d66df4f21731ab3b3c2ac1dc91ade411a0f32f3b9d94694736aace0c70d281f39632f01c66
@@ -55,7 +55,6 @@ module P2p2
55
55
  puts 'looping'
56
56
 
57
57
  new_appd
58
- new_p2
59
58
 
60
59
  loop do
61
60
  rs, ws = IO.select( @reads, @writes )
@@ -134,6 +133,10 @@ module P2p2
134
133
  return
135
134
  end
136
135
 
136
+ if @p2.nil? || @p2.closed?
137
+ new_p2
138
+ end
139
+
137
140
  app_id = app.object_id
138
141
 
139
142
  @socks[ app_id ] = app
@@ -388,7 +391,8 @@ module P2p2
388
391
  info[ :fin2s ].delete( app_id )
389
392
  when P1_FIN
390
393
  return if sockaddr != info[ :p1_addr ]
391
- raise "recv p1 fin #{ Time.new }"
394
+ puts "recv p1 fin #{ Time.new }"
395
+ add_closing( p2 )
392
396
  end
393
397
 
394
398
  return
@@ -511,7 +515,8 @@ module P2p2
511
515
  #
512
516
  def write_p2( p2 )
513
517
  if @closings.include?( p2 )
514
- quit!
518
+ close_p2( p2 )
519
+ return
515
520
  end
516
521
 
517
522
  now = Time.new
@@ -843,6 +848,19 @@ module P2p2
843
848
  add_write( sock )
844
849
  end
845
850
 
851
+ def close_p2( p2 )
852
+ info = close_sock( p2 )
853
+
854
+ info[ :chunks ].each do | filename |
855
+ begin
856
+ File.delete( File.join( @p2_chunk_dir, filename ) )
857
+ rescue Errno::ENOENT
858
+ end
859
+ end
860
+
861
+ info[ :app_exts ].each{ | _, ext | add_closing( ext[ :app ] ) }
862
+ end
863
+
846
864
  def close_app( app )
847
865
  info = close_sock( app )
848
866
  p2 = info[ :p2 ]
@@ -88,7 +88,7 @@ module P2p2
88
88
 
89
89
  def read_p2pd( p2pd )
90
90
  data, addrinfo, rflags, *controls = p2pd.recvmsg
91
- return if data.size > 255
91
+ return if ( data.bytesize > 255 ) || ( data =~ /\/|\.|\ / )
92
92
 
93
93
  sockaddr = addrinfo.to_sockaddr
94
94
  title_path = File.join( @p2pd_dir, data )
@@ -118,7 +118,7 @@ module P2p2
118
118
  begin
119
119
  # puts "debug write title #{ title_path } #{ Time.new }"
120
120
  IO.binwrite( title_path, sockaddr )
121
- rescue Errno::ENOENT, ArgumentError => e
121
+ rescue Errno::EISDIR, Errno::ENAMETOOLONG, Errno::ENOENT, ArgumentError => e
122
122
  puts "binwrite #{ e.class } #{ Time.new }"
123
123
  end
124
124
  end
@@ -1,3 +1,3 @@
1
1
  module P2p2
2
- VERSION = "0.10.0"
2
+ VERSION = "0.11.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: p2p2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - takafan