quaff 0.8.0pre2 → 0.8.0pre3

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
  SHA1:
3
- metadata.gz: 3642e3cc0f0fc8d533940c0c00484e0e2b1a2660
4
- data.tar.gz: 9f25a2b75fae66447a07f44b659d0fd656ca6a47
3
+ metadata.gz: a0505dc9bc1965dfc470e373754f8509ee65094d
4
+ data.tar.gz: a4c6ba63ae5bf0f1429160d61143314e132b99b0
5
5
  SHA512:
6
- metadata.gz: bc48e208ff133151f6090d4b0fe58fa67142fe6d56ca897ac982ae0def6dd935675d20bda9c3523b625c8ced2743ceefc344f96130b3d00b31c314e4fce35863
7
- data.tar.gz: 1bcbc503165d3647b3419cb3fccd36efa0fbbe7d949ecc5a7b83c3a3745f0627318ae8a268c4272ecc8d65529c0319c650b39ba5af2f3fa9d32d63dcc4188611
6
+ metadata.gz: dce2ab83565cbc8c9e972da8826849ece5676a8acff9eff7759dea95df7fd060ee060a9889a568b801540880dc2bb437f46d1d6852d2a5f646c688f184fd018e
7
+ data.tar.gz: fbaec7c7469823851642cb47c97e0ff9975ffd9fb7c678c89df397aa2ed4ee627af8be8e61f832fad3b3616f9974fbe13101d76b765dfdce612896042227a5f5
data/lib/quaff/call.rb CHANGED
@@ -116,7 +116,6 @@ class Call
116
116
  end
117
117
 
118
118
  found_match = false
119
- dialog_creating = nil
120
119
 
121
120
  possible_messages.each do
122
121
  | what, this_dialog_creating |
@@ -133,7 +132,12 @@ class Call
133
132
  end
134
133
 
135
134
  if found_match
136
- dialog_creating = this_dialog_creating
135
+ if this_dialog_creating && (type == :request)
136
+ create_dialog_from_request msg
137
+ end
138
+ if this_dialog_creating && (type == :response)
139
+ create_dialog_from_response msg
140
+ end
137
141
  break
138
142
  end
139
143
  end
@@ -142,9 +146,6 @@ class Call
142
146
  raise((msg.to_s || "Message is nil!"))
143
147
  end
144
148
 
145
- if dialog_creating
146
- create_dialog msg
147
- end
148
149
  msg
149
150
  end
150
151
 
@@ -232,7 +233,18 @@ class Call
232
233
  def send_request(method, options={})
233
234
  body = options[:body] || ""
234
235
  headers = options[:headers] || {}
235
- new_tsx = options[:new_tsx].nil? ? true : options[:new_tsx]
236
+ new_tsx = if options[:new_tsx].nil?
237
+ # new_tsx was not given. Default it to true, unless
238
+ # same_tsx_as was given.
239
+ unless options[:same_tsx_as]
240
+ true
241
+ else
242
+ false
243
+ end
244
+ else
245
+ # new_tsx was given, use that value.
246
+ options[:new_tsx]
247
+ end
236
248
  retrans =
237
249
  if options[:retrans].nil?
238
250
  if method == "ACK"
@@ -226,7 +226,7 @@ module Quaff
226
226
  end
227
227
 
228
228
  def is_retransmission? msg
229
- @hashes.include? Digest::MD5.hexdigest(msg.to_s)
229
+ @hashes.include? msg.unique_key
230
230
  end
231
231
 
232
232
  def queue_msg(msg, source)
data/lib/quaff/message.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'digest/md5'
2
+
1
3
  module Quaff
2
4
  class SipMessage
3
5
  attr_accessor :method, :requri, :reason, :status_code, :headers, :source
@@ -19,6 +21,17 @@ class SipMessage
19
21
  end
20
22
  end
21
23
 
24
+ def unique_key
25
+ via = if @headers['Via']
26
+ @headers['Via'][-1]
27
+ end
28
+
29
+ contact = header("Contact")
30
+ cid = header("Call-ID")
31
+ s = "#{via} #{@method} #{@status_code} #{contact} #{cid} #{@requri}"
32
+ Digest::MD5.hexdigest(s)
33
+ end
34
+
22
35
  def type
23
36
  if @method
24
37
  :request
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quaff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0pre2
4
+ version: 0.8.0pre3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Day