contrast-agent 3.8.4 → 3.8.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/build_funchook.rb +21 -8
- data/funchook/autom4te.cache/requests +47 -47
- data/funchook/config.log +2 -2
- data/lib/contrast/agent/socket_client.rb +10 -7
- data/lib/contrast/agent/version.rb +1 -1
- data/lib/contrast/api/speedracer.rb +56 -76
- data/lib/contrast/components/contrast_service.rb +13 -8
- data/lib/contrast/utils/service_sender_util.rb +12 -4
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b789de55c662b3c95a253bac0ab731c931c0d97dad6fe7c6f827c40a17d64ed7
|
4
|
+
data.tar.gz: b7589a20f7d89191ca3b1633a93204fb7195f802272f2701b8d17553104979ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '00693f21684374256997ada3d2a40889c288e116931662126ab7305dd2504c5fbb5d6657acd03c215181fcc839950b5b7a3ceccb7f1a347d2b91e7ae8556cf3b'
|
7
|
+
data.tar.gz: d44389e25b56d8da40e9b9de424ac9189c5d5929d252e2e082d09643dcf79b9d65b5b2179524a09cc9ab0978c5158eea02bcb3d042df12dea2e09b4bdf99a7b2
|
data/ext/build_funchook.rb
CHANGED
@@ -2,13 +2,25 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
require 'fileutils'
|
5
|
-
|
6
5
|
unless find_header('funchook.h', ext_path)
|
7
6
|
|
8
7
|
FUNCHOOK_DIR_NAME = 'funchook'
|
9
8
|
FUNCHOOK_DIR = File.expand_path(File.join(File.dirname(File.expand_path(__FILE__)), '..', FUNCHOOK_DIR_NAME))
|
10
9
|
|
11
10
|
COMMANDS = ['./autogen.sh', './configure', 'make clean', 'make'].freeze
|
11
|
+
bundler_install_target_paths = []
|
12
|
+
|
13
|
+
possible_gem_paths = Gem.path # .path and .paths diverge in their return type - .path returns strings, .paths returns PathSupports
|
14
|
+
possible_gem_paths.each do |base_path|
|
15
|
+
contrast_gem_dir_search = File.join(base_path, '**', '*', 'contrast-agent-*')
|
16
|
+
extension_paths = Dir[contrast_gem_dir_search]
|
17
|
+
extension_paths.map! do |extension_path|
|
18
|
+
target_path = File.join(extension_path, 'shared_libraries')
|
19
|
+
FileUtils.mkdir_p(target_path)
|
20
|
+
target_path
|
21
|
+
end
|
22
|
+
bundler_install_target_paths += extension_paths
|
23
|
+
end
|
12
24
|
|
13
25
|
puts 'Building funchook'
|
14
26
|
COMMANDS.each do |command|
|
@@ -19,15 +31,15 @@ unless find_header('funchook.h', ext_path)
|
|
19
31
|
end
|
20
32
|
|
21
33
|
SOURCE_PATHS = [
|
22
|
-
|
23
|
-
|
24
|
-
|
34
|
+
File.join('include', 'funchook.h'),
|
35
|
+
File.join('src', 'libfunchook.dylib'),
|
36
|
+
File.join('src', 'libfunchook.so')
|
25
37
|
].freeze
|
26
38
|
|
27
|
-
TARGET_PATHS = [
|
28
|
-
|
29
|
-
|
30
|
-
].freeze
|
39
|
+
TARGET_PATHS = ([
|
40
|
+
File.expand_path(File.join(File.expand_path(__dir__), '..', 'shared_libraries')),
|
41
|
+
File.expand_path(__dir__)
|
42
|
+
] + (bundler_install_target_paths)).freeze
|
31
43
|
|
32
44
|
puts 'Copying required files'
|
33
45
|
|
@@ -45,4 +57,5 @@ unless find_header('funchook.h', ext_path)
|
|
45
57
|
end
|
46
58
|
end
|
47
59
|
|
60
|
+
|
48
61
|
have_header('funchook.h', ext_path)
|
@@ -14,64 +14,64 @@
|
|
14
14
|
'configure.ac'
|
15
15
|
],
|
16
16
|
{
|
17
|
-
'
|
18
|
-
'
|
19
|
-
'
|
17
|
+
'AC_PROG_LIBTOOL' => 1,
|
18
|
+
'm4_sinclude' => 1,
|
19
|
+
'AM_PROG_F77_C_O' => 1,
|
20
|
+
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
|
21
|
+
'AM_POT_TOOLS' => 1,
|
20
22
|
'AC_CONFIG_SUBDIRS' => 1,
|
21
|
-
'AM_INIT_AUTOMAKE' => 1,
|
22
|
-
'AM_PROG_CC_C_O' => 1,
|
23
|
-
'AM_AUTOMAKE_VERSION' => 1,
|
24
|
-
'AC_INIT' => 1,
|
25
|
-
'_AM_COND_IF' => 1,
|
26
|
-
'LT_CONFIG_LTDL_DIR' => 1,
|
27
|
-
'AC_FC_PP_SRCEXT' => 1,
|
28
|
-
'AM_PROG_CXX_C_O' => 1,
|
29
23
|
'AM_NLS' => 1,
|
30
|
-
'm4_pattern_forbid' => 1,
|
31
|
-
'AM_PROG_AR' => 1,
|
32
|
-
'm4_pattern_allow' => 1,
|
33
|
-
'AH_OUTPUT' => 1,
|
34
|
-
'AM_XGETTEXT_OPTION' => 1,
|
35
|
-
'AC_FC_PP_DEFINE' => 1,
|
36
|
-
'AM_ENABLE_MULTILIB' => 1,
|
37
|
-
'm4_sinclude' => 1,
|
38
|
-
'AM_MAINTAINER_MODE' => 1,
|
39
|
-
'AM_GNU_GETTEXT' => 1,
|
40
|
-
'_m4_warn' => 1,
|
41
|
-
'sinclude' => 1,
|
42
|
-
'_AM_COND_ENDIF' => 1,
|
43
|
-
'AC_CANONICAL_HOST' => 1,
|
44
|
-
'AM_PROG_LIBTOOL' => 1,
|
45
|
-
'AC_CONFIG_LIBOBJ_DIR' => 1,
|
46
24
|
'AC_FC_SRCEXT' => 1,
|
47
|
-
'AM_CONDITIONAL' => 1,
|
48
25
|
'LT_SUPPORTED_TAG' => 1,
|
49
|
-
'
|
50
|
-
'
|
51
|
-
'
|
52
|
-
'
|
53
|
-
'
|
26
|
+
'AC_LIBSOURCE' => 1,
|
27
|
+
'AC_CONFIG_LIBOBJ_DIR' => 1,
|
28
|
+
'sinclude' => 1,
|
29
|
+
'_LT_AC_TAGCONFIG' => 1,
|
30
|
+
'_AM_COND_ELSE' => 1,
|
31
|
+
'AM_PROG_LIBTOOL' => 1,
|
54
32
|
'AC_SUBST' => 1,
|
33
|
+
'_AM_COND_ENDIF' => 1,
|
55
34
|
'AM_PROG_FC_C_O' => 1,
|
56
|
-
'AM_SILENT_RULES' => 1,
|
57
|
-
'AC_PROG_LIBTOOL' => 1,
|
58
|
-
'AM_PROG_MOC' => 1,
|
59
|
-
'AM_PROG_F77_C_O' => 1,
|
60
|
-
'm4_include' => 1,
|
61
|
-
'AC_CANONICAL_TARGET' => 1,
|
62
|
-
'AC_CONFIG_FILES' => 1,
|
63
|
-
'include' => 1,
|
64
|
-
'AC_DEFINE_TRACE_LITERAL' => 1,
|
65
35
|
'_AM_SUBST_NOTMAKE' => 1,
|
66
|
-
'
|
67
|
-
'
|
68
|
-
'
|
36
|
+
'AC_CONFIG_FILES' => 1,
|
37
|
+
'AC_REQUIRE_AUX_FILE' => 1,
|
38
|
+
'AM_PROG_MOC' => 1,
|
39
|
+
'AH_OUTPUT' => 1,
|
40
|
+
'AC_FC_PP_SRCEXT' => 1,
|
41
|
+
'AM_MAINTAINER_MODE' => 1,
|
42
|
+
'AM_PROG_CC_C_O' => 1,
|
69
43
|
'AC_CONFIG_LINKS' => 1,
|
70
|
-
'
|
44
|
+
'_m4_warn' => 1,
|
45
|
+
'AM_PROG_CXX_C_O' => 1,
|
71
46
|
'LT_INIT' => 1,
|
47
|
+
'AM_PATH_GUILE' => 1,
|
48
|
+
'LT_CONFIG_LTDL_DIR' => 1,
|
49
|
+
'AC_FC_FREEFORM' => 1,
|
50
|
+
'AM_XGETTEXT_OPTION' => 1,
|
51
|
+
'AM_AUTOMAKE_VERSION' => 1,
|
52
|
+
'include' => 1,
|
53
|
+
'AC_CANONICAL_SYSTEM' => 1,
|
54
|
+
'AM_INIT_AUTOMAKE' => 1,
|
55
|
+
'm4_pattern_forbid' => 1,
|
56
|
+
'AC_CONFIG_AUX_DIR' => 1,
|
57
|
+
'AM_SILENT_RULES' => 1,
|
58
|
+
'AM_PROG_AR' => 1,
|
59
|
+
'AC_FC_PP_DEFINE' => 1,
|
72
60
|
'AC_CONFIG_HEADERS' => 1,
|
73
61
|
'_AM_MAKEFILE_INCLUDE' => 1,
|
74
|
-
'
|
62
|
+
'AC_CANONICAL_BUILD' => 1,
|
63
|
+
'AM_MAKEFILE_INCLUDE' => 1,
|
64
|
+
'AM_CONDITIONAL' => 1,
|
65
|
+
'm4_include' => 1,
|
66
|
+
'AC_INIT' => 1,
|
67
|
+
'AC_DEFINE_TRACE_LITERAL' => 1,
|
68
|
+
'AC_SUBST_TRACE' => 1,
|
69
|
+
'_AM_COND_IF' => 1,
|
70
|
+
'AC_CANONICAL_HOST' => 1,
|
71
|
+
'm4_pattern_allow' => 1,
|
72
|
+
'AM_GNU_GETTEXT' => 1,
|
73
|
+
'AC_CANONICAL_TARGET' => 1,
|
74
|
+
'AM_ENABLE_MULTILIB' => 1
|
75
75
|
}
|
76
76
|
], 'Autom4te::Request' )
|
77
77
|
);
|
data/funchook/config.log
CHANGED
@@ -10,7 +10,7 @@ generated by GNU Autoconf 2.69. Invocation command line was
|
|
10
10
|
## Platform. ##
|
11
11
|
## --------- ##
|
12
12
|
|
13
|
-
hostname =
|
13
|
+
hostname = 190fbedb-dc16-42d3-8ff7-6ac407e6f5f6-sf5wp
|
14
14
|
uname -m = x86_64
|
15
15
|
uname -r = 4.19.95-flatcar
|
16
16
|
uname -s = Linux
|
@@ -326,7 +326,7 @@ generated by GNU Autoconf 2.69. Invocation command line was
|
|
326
326
|
CONFIG_COMMANDS =
|
327
327
|
$ ./config.status
|
328
328
|
|
329
|
-
on
|
329
|
+
on 190fbedb-dc16-42d3-8ff7-6ac407e6f5f6-sf5wp
|
330
330
|
|
331
331
|
config.status:822: creating Makefile
|
332
332
|
config.status:822: creating src/Makefile
|
@@ -47,10 +47,11 @@ module Contrast
|
|
47
47
|
# service config option, we must first start up the service. Afterwards, we
|
48
48
|
# must send agent startup messages no matter what the config options are.
|
49
49
|
#
|
50
|
-
# @param
|
50
|
+
# @param event [Contrast::Api::Dtm] One of the DTMs valid for the event
|
51
|
+
# field of Contrast::Api::Dtm::Message
|
51
52
|
# @return [Array<Contrast::Api::Settings::AgentSettings>] the response from SpeedRacer or nil
|
52
53
|
# if it failed to send or the service is unavailable.
|
53
|
-
def send_to_speedracer
|
54
|
+
def send_to_speedracer event
|
54
55
|
return if service_unavailable?
|
55
56
|
|
56
57
|
@ensure_running.synchronize do
|
@@ -60,16 +61,14 @@ module Contrast
|
|
60
61
|
build_service_context unless status.startup_messages_sent?
|
61
62
|
end
|
62
63
|
|
63
|
-
logger.debug_with_time(
|
64
|
-
|
65
|
-
response = speedracer.send_one msg
|
64
|
+
logger.debug_with_time(event.cs__class.name) do
|
65
|
+
response = speedracer.send_one event
|
66
66
|
status.success!
|
67
|
-
logger.debug "[m__id__:#{ msg.__id__ }]\tReceived response:#{ response ? response.__id__ : '[No Response]' } for message."
|
68
67
|
response
|
69
68
|
end
|
70
69
|
rescue StandardError => e
|
71
70
|
status.failure!
|
72
|
-
logger.error(e, "Unable to send
|
71
|
+
logger.error(e, "Unable to send #{ event.cs__class } message #{ event.__id__ }.")
|
73
72
|
nil
|
74
73
|
end
|
75
74
|
|
@@ -103,9 +102,13 @@ module Contrast
|
|
103
102
|
# 1 initial attempt, + 3 potential retries.
|
104
103
|
# The agent-service-api REQUIREMENTS.md spec mandates this #.
|
105
104
|
4.times do
|
105
|
+
# TODO: RUBY-794 make Type & ID structured for parsing)
|
106
|
+
logger.debug("Immediately sending #{ agent_startup_msg.cs__class.name } event #{ agent_startup_msg.__id__ }.")
|
106
107
|
next unless (agent_response = speedracer.send_one(agent_startup_msg))
|
107
108
|
|
108
109
|
# Connection was successful
|
110
|
+
# TODO: RUBY-794 make Type & ID structured for parsing)
|
111
|
+
logger.debug("Immediately sending #{ app_startup_msg.cs__class.name } event #{ app_startup_msg.__id__ }.")
|
109
112
|
app_response = speedracer.send_one(app_startup_msg)
|
110
113
|
[agent_response, app_response].each do |msg|
|
111
114
|
Contrast::Utils::ServiceResponseUtil.process_response msg
|
@@ -59,27 +59,14 @@ module Contrast
|
|
59
59
|
is_service_started
|
60
60
|
end
|
61
61
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
when Contrast::Api::Dtm::ApplicationUpdate
|
71
|
-
send_application_update(msg)
|
72
|
-
when Contrast::Api::Dtm::Activity
|
73
|
-
send_application_activity(msg)
|
74
|
-
when Contrast::Api::Dtm::HttpRequest
|
75
|
-
send_prefilter(msg)
|
76
|
-
when Contrast::Api::Dtm::HttpResponse
|
77
|
-
send_postfilter(msg)
|
78
|
-
when Contrast::Api::Dtm::Noop
|
79
|
-
send_noop(msg)
|
80
|
-
when Contrast::Api::Dtm::ObservedRoute
|
81
|
-
send_observed_route(msg)
|
82
|
-
end
|
62
|
+
# Wrap the given DTM in a Contrast::Api::Dtm::Message and send it to the
|
63
|
+
# Service for processing
|
64
|
+
#
|
65
|
+
# @param event [Contrast::Api::Dtm] One of the DTMs valid for the event field of
|
66
|
+
# Contrast::Api::Dtm::Message
|
67
|
+
def send_one event
|
68
|
+
msg = build_message(event)
|
69
|
+
send_message(msg)
|
83
70
|
end
|
84
71
|
|
85
72
|
private
|
@@ -124,58 +111,39 @@ module Contrast
|
|
124
111
|
end
|
125
112
|
end
|
126
113
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
send_message(msg)
|
161
|
-
end
|
162
|
-
|
163
|
-
def send_postfilter http_response
|
164
|
-
msg = base_message
|
165
|
-
msg.postfilter = http_response
|
166
|
-
send_message(msg)
|
167
|
-
end
|
168
|
-
|
169
|
-
def send_noop noop = nil
|
170
|
-
msg = base_message
|
171
|
-
msg.noop = noop || Contrast::Api::Dtm::Noop.new
|
172
|
-
send_message(msg)
|
173
|
-
end
|
174
|
-
|
175
|
-
def send_observed_route observed_route
|
176
|
-
msg = base_message
|
177
|
-
msg.observed_route = observed_route
|
178
|
-
send_message(msg)
|
114
|
+
# Wrap the given event in a Contrast::Api::Dtm::Message
|
115
|
+
#
|
116
|
+
# @param event [Contrast::Api::Dtm] One of the DTMs valid for the event field of
|
117
|
+
# Contrast::Api::Dtm::Message
|
118
|
+
# @return Contrast::Api::Dtm::Message
|
119
|
+
def build_message event
|
120
|
+
message = base_message
|
121
|
+
case event
|
122
|
+
when Contrast::Api::Dtm::ServerActivity
|
123
|
+
message.server_activity = event
|
124
|
+
when Contrast::Api::Dtm::AgentStartup
|
125
|
+
message.agent_startup = event
|
126
|
+
when Contrast::Api::Dtm::ApplicationCreate
|
127
|
+
message.application_create = event
|
128
|
+
when Contrast::Api::Dtm::ApplicationUpdate
|
129
|
+
message.application_update = event
|
130
|
+
when Contrast::Api::Dtm::Activity
|
131
|
+
message.activity = event
|
132
|
+
when Contrast::Api::Dtm::HttpRequest
|
133
|
+
message.prefilter = event
|
134
|
+
when Contrast::Api::Dtm::HttpResponse
|
135
|
+
message.postfilter = event
|
136
|
+
when Contrast::Api::Dtm::Noop
|
137
|
+
message.noop = event
|
138
|
+
when Contrast::Api::Dtm::ObservedRoute
|
139
|
+
message.observed_route = event
|
140
|
+
else
|
141
|
+
logger.error("Unknown event type #{ event.cs__class.name } received. Unsure how to send.")
|
142
|
+
return
|
143
|
+
end
|
144
|
+
# TODO: RUBY-794 make ID structured for parsing
|
145
|
+
logger.debug("Wrapping the event #{ event.__id__ } in message #{ message.__id__ } (#{ message.pid }-#{ message.message_count }.")
|
146
|
+
message
|
179
147
|
end
|
180
148
|
|
181
149
|
def base_message
|
@@ -192,10 +160,22 @@ module Contrast
|
|
192
160
|
msg
|
193
161
|
end
|
194
162
|
|
195
|
-
def send_message
|
196
|
-
|
163
|
+
def send_message msg
|
164
|
+
# TODO: RUBY-794 make PID & Count structured for parsing
|
165
|
+
logger.debug "[m__id__:#{ msg.__id__ }]\tSending message #{ msg.pid }-#{ msg.message_count }."
|
166
|
+
to_service = Contrast::Api::Dtm::Message.encode(msg)
|
197
167
|
from_service = send_marshaled(to_service)
|
198
|
-
Contrast::Api::Settings::AgentSettings.decode(from_service)
|
168
|
+
response = Contrast::Api::Settings::AgentSettings.decode(from_service)
|
169
|
+
# TODO: RUBY-794 make PID & Count structured for parsing
|
170
|
+
log_message = "[m__id__:#{ msg.__id__ }]\tReceived response: " \
|
171
|
+
"#{ response ? response.__id__ : '[No Response]' } for " \
|
172
|
+
"message #{ msg.pid }-#{ msg.message_count }."
|
173
|
+
logger.debug(log_message)
|
174
|
+
response
|
175
|
+
rescue StandardError => e
|
176
|
+
# TODO: RUBY-794 make PID & Count structured for parsing
|
177
|
+
logger.error(e, "[m__id__:#{ msg.__id__ }]\tSending failed for message #{ msg.pid }-#{ msg.message_count }.")
|
178
|
+
raise e # reraise to let SocketClient manage the connection
|
199
179
|
end
|
200
180
|
|
201
181
|
def send_marshaled marshaled
|
@@ -84,11 +84,14 @@ module Contrast
|
|
84
84
|
# handle it. The service response is not returned; rather, it is processed by the service sender
|
85
85
|
# thread. All messages sent to SpeedRacer should be queued rather than sent unless the calling method
|
86
86
|
# explicitly needs to act on the response object with custom logic (i.e. RequestContext#service_extract_response)
|
87
|
-
#
|
88
|
-
|
89
|
-
|
87
|
+
#
|
88
|
+
# @param event [Contrast::Api::Dtm] One of the DTMs valid for the event
|
89
|
+
# field of Contrast::Api::Dtm::Message
|
90
|
+
# TODO: rename method to queue_event
|
91
|
+
def queue_message event
|
92
|
+
return unless event
|
90
93
|
|
91
|
-
Contrast::Utils::ServiceSenderUtil.push_to_ready_queue(
|
94
|
+
Contrast::Utils::ServiceSenderUtil.push_to_ready_queue(event)
|
92
95
|
end
|
93
96
|
|
94
97
|
# TODO: RUBY-662. Add additional check before we queue/send a message to see if we were unable
|
@@ -98,12 +101,14 @@ module Contrast
|
|
98
101
|
# to receive the response object back from SpeedRacer. An invoking method that needs
|
99
102
|
# to process the response object with custom logic should use this method.
|
100
103
|
#
|
101
|
-
# @param
|
104
|
+
# @param event [Contrast::Api::Dtm] One of the DTMs valid for the event
|
105
|
+
# field of Contrast::Api::Dtm::Message
|
102
106
|
# @return [Array<Contrast::Api::Dtm::AttackResult>] the response from SpeedRacer
|
103
|
-
|
104
|
-
|
107
|
+
# TODO: rename method to send_event
|
108
|
+
def send_message event
|
109
|
+
return unless event
|
105
110
|
|
106
|
-
state.client.send_to_speedracer(
|
111
|
+
state.client.send_to_speedracer(event)
|
107
112
|
end
|
108
113
|
end
|
109
114
|
|
@@ -18,11 +18,18 @@ module Contrast
|
|
18
18
|
class << self
|
19
19
|
attr_reader :assess_messages, :ready_messages_queue
|
20
20
|
|
21
|
-
|
21
|
+
# Push the given DTM into a queue to be sent to the Service.
|
22
|
+
#
|
23
|
+
# @param event [Contrast::Api::Dtm] One of the DTMs valid for the event field of
|
24
|
+
# Contrast::Api::Dtm::Message
|
25
|
+
def push_to_ready_queue event
|
26
|
+
return unless event
|
27
|
+
|
22
28
|
# Since a message may try to be pushed before sending_thread starts up, we need to initialize
|
23
29
|
# the queue on first message sent
|
24
30
|
@ready_messages_queue ||= Queue.new
|
25
|
-
ready_messages_queue.push
|
31
|
+
ready_messages_queue.push event
|
32
|
+
logger.debug("Enqueued the #{ event.cs__class.name } event #{ event.__id__ }.") # TODO: RUBY-794 make Type & ID structured for parsing)
|
26
33
|
end
|
27
34
|
|
28
35
|
def sending_thread
|
@@ -34,9 +41,10 @@ module Contrast
|
|
34
41
|
loop do
|
35
42
|
check_assess_queue if assess_messages # don't bother checking if assess queue is already cleared
|
36
43
|
# if ready messages queue is empty, calling thread is suspended until a message is pushed onto queue
|
37
|
-
|
44
|
+
event = ready_messages_queue.pop
|
38
45
|
begin
|
39
|
-
|
46
|
+
logger.debug("Dequeued the #{ event.cs__class.name } event #{ event.__id__ }.") # TODO: RUBY-794 make Type & ID structured for parsing)
|
47
|
+
response = Contrast::Agent::FeatureState.instance.client.send_to_speedracer event
|
40
48
|
Contrast::Utils::ServiceResponseUtil.process_response(response) if response
|
41
49
|
rescue StandardError => e
|
42
50
|
logger.error(e, 'Could not send message to service from service sender thread.')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: contrast-agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.8.
|
4
|
+
version: 3.8.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- galen.palmer@contrastsecurity.com
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: exe
|
14
14
|
cert_chain: []
|
15
|
-
date: 2020-04-
|
15
|
+
date: 2020-04-22 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: bundler
|
@@ -392,21 +392,21 @@ executables:
|
|
392
392
|
- contrast_service
|
393
393
|
extensions:
|
394
394
|
- ext/cs__common/extconf.rb
|
395
|
+
- ext/cs__assess_basic_object/extconf.rb
|
396
|
+
- ext/cs__assess_marshal_module/extconf.rb
|
395
397
|
- ext/cs__scope/extconf.rb
|
396
|
-
- ext/
|
398
|
+
- ext/cs__assess_regexp/extconf.rb
|
399
|
+
- ext/cs__assess_hash/extconf.rb
|
400
|
+
- ext/cs__assess_fiber_track/extconf.rb
|
401
|
+
- ext/cs__assess_array/extconf.rb
|
397
402
|
- ext/cs__assess_active_record_named/extconf.rb
|
398
403
|
- ext/cs__assess_kernel/extconf.rb
|
399
|
-
- ext/cs__assess_marshal_module/extconf.rb
|
400
|
-
- ext/cs__assess_fiber_track/extconf.rb
|
401
|
-
- ext/cs__assess_regexp/extconf.rb
|
402
|
-
- ext/cs__assess_basic_object/extconf.rb
|
403
|
-
- ext/cs__contrast_patch/extconf.rb
|
404
|
-
- ext/cs__assess_string_interpolation26/extconf.rb
|
405
404
|
- ext/cs__assess_regexp_track/extconf.rb
|
406
405
|
- ext/cs__protect_kernel/extconf.rb
|
407
406
|
- ext/cs__assess_string/extconf.rb
|
408
|
-
- ext/
|
409
|
-
- ext/
|
407
|
+
- ext/cs__assess_string_interpolation26/extconf.rb
|
408
|
+
- ext/cs__contrast_patch/extconf.rb
|
409
|
+
- ext/cs__assess_module/extconf.rb
|
410
410
|
extra_rdoc_files: []
|
411
411
|
files:
|
412
412
|
- ".clang-format"
|