nonnative 1.37.0 → 1.38.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/CHANGELOG.md +14 -0
- data/Gemfile.lock +1 -1
- data/lib/nonnative/close_all_socket_pair.rb +1 -0
- data/lib/nonnative/fault_injection_proxy.rb +23 -10
- data/lib/nonnative/socket_pair.rb +2 -5
- data/lib/nonnative/socket_pair_factory.rb +2 -2
- data/lib/nonnative/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 66174bae17db6e0fae12b8d0be37b1373c887687901a072e32914cb00bea1f08
|
4
|
+
data.tar.gz: a7430fe7c5d8bfd4a5a43fcf733fe80ef8fb1c8a25e78a2e22c5847518c547e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b57cbc993f69dd8b051dcd51ccf2953dff7bede798fae49c75439e9d47b8dac8474f391d3050ec71af706bf75febfb681c65ddb247cbf7c87bc7d3d3f3e153f
|
7
|
+
data.tar.gz: 30f89fcd78a1a5eedb130f4707bb60246db7ad98df733cf13e6f39146a25c955d2664fb407e65ed318de28ab61b7f222a9e380abd50349c446ab1a7c39952953
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,20 @@
|
|
2
2
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
4
4
|
|
5
|
+
## [1.38.0](https://github.com/alexfalkowski/nonnative/compare/v1.37.0...v1.38.0) (2021-04-22)
|
6
|
+
|
7
|
+
|
8
|
+
### Features
|
9
|
+
|
10
|
+
* terminate connections on change ([#74](https://github.com/alexfalkowski/nonnative/issues/74)) ([6c1cc8e](https://github.com/alexfalkowski/nonnative/commit/6c1cc8e1c3f15d11848889852897b523f5848794))
|
11
|
+
|
12
|
+
## [1.37.0](https://github.com/alexfalkowski/nonnative/compare/v1.36.0...v1.37.0) (2021-04-22)
|
13
|
+
|
14
|
+
|
15
|
+
### Features
|
16
|
+
|
17
|
+
* simplify go exeutable ([#73](https://github.com/alexfalkowski/nonnative/issues/73)) ([95e4cf4](https://github.com/alexfalkowski/nonnative/commit/95e4cf44180ee84d32cc42ee058d6742732b57b9))
|
18
|
+
|
5
19
|
## [1.36.0](https://github.com/alexfalkowski/nonnative/compare/v1.35.2...v1.36.0) (2021-04-21)
|
6
20
|
|
7
21
|
|
data/Gemfile.lock
CHANGED
@@ -48,14 +48,7 @@ module Nonnative
|
|
48
48
|
def perform_start
|
49
49
|
loop do
|
50
50
|
thread = Thread.start(tcp_server.accept) do |local_socket|
|
51
|
-
|
52
|
-
|
53
|
-
logger.info "started connection for #{id} with socket #{local_socket.inspect}"
|
54
|
-
|
55
|
-
connect local_socket
|
56
|
-
connections.delete(id)
|
57
|
-
|
58
|
-
logger.info "finished connection for #{id} with socket #{local_socket.inspect}"
|
51
|
+
accept_connection local_socket
|
59
52
|
end
|
60
53
|
|
61
54
|
thread.report_on_exception = false
|
@@ -63,12 +56,32 @@ module Nonnative
|
|
63
56
|
end
|
64
57
|
end
|
65
58
|
|
59
|
+
def accept_connection(local_socket)
|
60
|
+
id = Thread.current.object_id
|
61
|
+
socket_info = local_socket.inspect
|
62
|
+
|
63
|
+
connect local_socket
|
64
|
+
connections.delete(id)
|
65
|
+
ensure
|
66
|
+
logger.info "handled connection for #{id} with socket #{socket_info}"
|
67
|
+
end
|
68
|
+
|
66
69
|
def connect(local_socket)
|
67
|
-
SocketPairFactory.create(read_state, service.proxy
|
70
|
+
pair = SocketPairFactory.create(read_state, service.proxy)
|
71
|
+
|
72
|
+
pair.connect(local_socket)
|
73
|
+
end
|
74
|
+
|
75
|
+
def close_connections
|
76
|
+
connections.each_value(&:terminate)
|
77
|
+
connections.clear
|
68
78
|
end
|
69
79
|
|
70
80
|
def apply_state(state)
|
71
|
-
mutex.synchronize
|
81
|
+
mutex.synchronize do
|
82
|
+
@state = state
|
83
|
+
close_connections
|
84
|
+
end
|
72
85
|
end
|
73
86
|
|
74
87
|
def read_state
|
@@ -2,9 +2,8 @@
|
|
2
2
|
|
3
3
|
module Nonnative
|
4
4
|
class SocketPair
|
5
|
-
def initialize(proxy
|
5
|
+
def initialize(proxy)
|
6
6
|
@proxy = proxy
|
7
|
-
@logger = logger
|
8
7
|
end
|
9
8
|
|
10
9
|
def connect(local_socket)
|
@@ -16,8 +15,6 @@ module Nonnative
|
|
16
15
|
break if pipe(ready, local_socket, remote_socket)
|
17
16
|
break if pipe(ready, remote_socket, local_socket)
|
18
17
|
end
|
19
|
-
rescue StandardError => e
|
20
|
-
logger.error e
|
21
18
|
ensure
|
22
19
|
local_socket.close
|
23
20
|
remote_socket&.close
|
@@ -25,7 +22,7 @@ module Nonnative
|
|
25
22
|
|
26
23
|
protected
|
27
24
|
|
28
|
-
attr_reader :proxy
|
25
|
+
attr_reader :proxy
|
29
26
|
|
30
27
|
def create_remote_socket
|
31
28
|
::TCPSocket.new('0.0.0.0', proxy.port)
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Nonnative
|
4
4
|
class SocketPairFactory
|
5
5
|
class << self
|
6
|
-
def create(type, proxy
|
6
|
+
def create(type, proxy)
|
7
7
|
pair = case type
|
8
8
|
when :close_all
|
9
9
|
CloseAllSocketPair
|
@@ -15,7 +15,7 @@ module Nonnative
|
|
15
15
|
SocketPair
|
16
16
|
end
|
17
17
|
|
18
|
-
pair.new(proxy
|
18
|
+
pair.new(proxy)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
data/lib/nonnative/version.rb
CHANGED