quaff 0.6.1 → 0.6.2

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/endpoint.rb +29 -9
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 362b974b90ecc19d0352dad44e9c959d393cd812
4
- data.tar.gz: 1c112cb8a544ea07a7aacde674ac4ee4fbb9cb1a
3
+ metadata.gz: 74ddf7205f6389ce8025f6f4603efcb2c96802bf
4
+ data.tar.gz: 53d6859c95082cfb58a6aa1f65641041f2a9db32
5
5
  SHA512:
6
- metadata.gz: a3622b09d5d9962a72fa8df86329b1200ed72be6804b468c32291ad1aff7818b746fcf1be6f55f48aaf640192e30c7d51844739fcc879acc69649c4e2e76d902
7
- data.tar.gz: 97abb2bacd2bcbdc0b3656025a80c183321105e40d1c089e74a3053e1446d1aae51d8912539fe8a29e93bee829b5424b22ba4fd52147350f611f6bf16ca2b222
6
+ metadata.gz: 4c2bd36727ba79e1c1108938d944fa1a0907a3bb3e139541aab08fdf8f785eac5c645017fb980adfa1f8c9c762c6432c5848da73ac30af9561d2eba9e6edcc0b
7
+ data.tar.gz: 67a217de9d2bcf196f5cdc910ea7fb6c2065492180abd68d9134356960999057487d47fedfb98c3bfccb54195744ba2b812835359476b022462e9c2e19a72837
data/lib/endpoint.rb CHANGED
@@ -7,6 +7,7 @@ require 'securerandom'
7
7
  #require 'milenage'
8
8
  require_relative './sip_parser.rb'
9
9
  require_relative './sources.rb'
10
+ require 'digest/md5'
10
11
 
11
12
  module Quaff
12
13
  class BaseEndpoint
@@ -20,9 +21,14 @@ module Quaff
20
21
  @sdp_port = @sdp_socket.addr[1]
21
22
  end
22
23
 
24
+ def terminate
25
+ @terminated = true
26
+ terminate_specific
27
+ end
28
+
23
29
  # Cleans up the endpoint - designed to be overriden by
24
30
  # per-transport subclasses
25
- def terminate
31
+ def terminate_specific
26
32
  end
27
33
 
28
34
  # Adds a socket connection to another UA - designed to be
@@ -38,7 +44,7 @@ module Quaff
38
44
  rescue Timeout::Error
39
45
  raise "#{ @uri } timed out waiting for new incoming call"
40
46
  end
41
-
47
+
42
48
  puts "Call-Id for endpoint on #{@local_port} is #{call_id}" if @msg_trace
43
49
  Call.new(self, call_id, @instance_id, @uri)
44
50
  end
@@ -84,6 +90,7 @@ module Quaff
84
90
  if outbound_proxy
85
91
  @outbound_connection = new_connection(outbound_proxy, outbound_port)
86
92
  end
93
+ @hashes = []
87
94
  initialize_queues
88
95
  start
89
96
  end
@@ -178,16 +185,27 @@ module Quaff
178
185
 
179
186
  def start
180
187
  Thread.new do
181
- loop do
188
+ until @terminated do
182
189
  recv_msg
183
190
  end
184
191
  end
185
192
  end
186
193
 
194
+ def is_retransmission? msg
195
+ @hashes.include? Digest::MD5.hexdigest(msg.to_s)
196
+ end
197
+
187
198
  def queue_msg(msg, source)
199
+ if is_retransmission? msg
200
+ @msg_log.push "Endpoint on #{@local_port} received retransmission"
201
+ puts "Endpoint on #{@local_port} received retransmission" if @msg_trace
202
+ return
203
+ end
204
+
205
+ @hashes.push Digest::MD5.hexdigest(msg.to_s)
206
+
188
207
  @msg_log.push "Endpoint on #{@local_port} received:\n\n#{msg.to_s.strip}\n\nfrom #{source.inspect}"
189
- puts "Endpoint on #{@local_port} received #{msg} from
190
- ##{source.inspect}" if @msg_trace
208
+ puts "Endpoint on #{@local_port} received #{msg} from #{source.inspect}" if @msg_trace
191
209
  msg.source = source
192
210
  cid = @parser.message_identifier msg
193
211
  if cid and not @dead_calls.has_key? cid then
@@ -215,7 +233,7 @@ module Quaff
215
233
  @sockets.push sock
216
234
  end
217
235
 
218
- def terminate
236
+ def terminate_specific
219
237
  oldsockets = @sockets.dup
220
238
  @sockets = []
221
239
  oldsockets.each do |s| s.close unless s.closed? end
@@ -242,8 +260,10 @@ module Quaff
242
260
 
243
261
 
244
262
  def recv_msg
263
+ warn "recv_msg called for an endpoint with no sockets - will tight-loop" if (@sockets.empty? and @cxn.nil?)
245
264
  select_response = IO.select(@sockets, [], [], 0) || [[]]
246
265
  readable = select_response[0]
266
+
247
267
  for sock in readable do
248
268
  recv_msg_from_sock sock
249
269
  end
@@ -258,13 +278,13 @@ module Quaff
258
278
  end
259
279
 
260
280
  def recv_msg_from_sock(sock)
261
- @parser.parse_start
262
- msg = nil
281
+ @parser.parse_start
282
+ msg = nil
263
283
  while msg.nil? and not sock.closed? do
264
284
  line = sock.gets
265
285
  msg = @parser.parse_partial line
266
286
  end
267
- queue_msg msg, TCPSourceFromSocket.new(sock)
287
+ queue_msg msg, TCPSourceFromSocket.new(sock)
268
288
  end
269
289
  end
270
290
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quaff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Day
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-24 00:00:00.000000000 Z
11
+ date: 2014-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: facter