callagent: Fix the SIPRequests>>#addDefaults: with the OrderedCollection
This commit is contained in:
parent
dac5de9a28
commit
2a7a1bb3cb
|
@ -76,6 +76,14 @@ Object subclass: SIPRequest [
|
||||||
self parameters add: (aPar -> aValue).
|
self parameters add: (aPar -> aValue).
|
||||||
]
|
]
|
||||||
|
|
||||||
|
parameter: aPar ifAbsent: aBlock [
|
||||||
|
<category: 'accessing'>
|
||||||
|
self parameters do: [:each |
|
||||||
|
each key = aPar ifTrue: [^ each value]].
|
||||||
|
|
||||||
|
aBlock value.
|
||||||
|
]
|
||||||
|
|
||||||
asDatagram [
|
asDatagram [
|
||||||
| out |
|
| out |
|
||||||
|
|
||||||
|
@ -108,10 +116,10 @@ Object subclass: SIPRequest [
|
||||||
]
|
]
|
||||||
|
|
||||||
addDefaults: out [
|
addDefaults: out [
|
||||||
self parameters at: 'To' ifAbsent: [
|
self parameter: 'To' ifAbsent: [
|
||||||
out
|
out
|
||||||
nextPutAll: 'To: %1' % {dialog generateTo}; cr;nl].
|
nextPutAll: 'To: %1' % {dialog generateTo}; cr;nl].
|
||||||
self parameters at: 'From' ifAbsent: [
|
self parameter: 'From' ifAbsent: [
|
||||||
out
|
out
|
||||||
nextPutAll: 'From: %1' % {dialog generateFrom}; cr;nl].
|
nextPutAll: 'From: %1' % {dialog generateFrom}; cr;nl].
|
||||||
]
|
]
|
||||||
|
@ -132,7 +140,7 @@ SIPRequest subclass: SIPInviteRequest [
|
||||||
addDefaults: out [
|
addDefaults: out [
|
||||||
super addDefaults: out.
|
super addDefaults: out.
|
||||||
|
|
||||||
self parameters at: 'Contact' ifAbsent: [
|
self parameter: 'Contact' ifAbsent: [
|
||||||
out nextPutAll: 'Contact: <%1>' % {dialog from};
|
out nextPutAll: 'Contact: <%1>' % {dialog from};
|
||||||
cr; nl.
|
cr; nl.
|
||||||
].
|
].
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
"
|
||||||
|
(C) 2011 by Holger Hans Peter Freyther
|
||||||
|
All Rights Reserved
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as
|
||||||
|
published by the Free Software Foundation, either version 3 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
"
|
||||||
|
|
||||||
|
TestCase subclass: SIPRequestTest [
|
||||||
|
testINVITE [
|
||||||
|
| dialog req out |
|
||||||
|
|
||||||
|
dialog := SIPDialog fromUser: 'sip:1000@on-foo.com' host: '192.168.0.106' port: 5060.
|
||||||
|
dialog fromTag: 'MzQ4NjQ4MTg0Mjc0MzAzODU5NA__'.
|
||||||
|
dialog to: 'sip:9198@192.168.0.106'.
|
||||||
|
|
||||||
|
req := SIPInviteRequest from: dialog.
|
||||||
|
|
||||||
|
out := (WriteStream on: String new)
|
||||||
|
nextPutAll: 'INVITE sip:9198@192.168.0.106 SIP/2.0'; cr; nl;
|
||||||
|
nextPutAll: 'To: <sip:9198@192.168.0.106>'; cr; nl;
|
||||||
|
nextPutAll: 'From: <sip:1000@on-foo.com>;tag=MzQ4NjQ4MTg0Mjc0MzAzODU5NA__'; cr; nl;
|
||||||
|
nextPutAll: 'Contact: <sip:1000@on-foo.com>'; cr; nl;
|
||||||
|
cr; nl; contents.
|
||||||
|
|
||||||
|
self assert: req asDatagram = out.
|
||||||
|
]
|
||||||
|
]
|
|
@ -18,7 +18,9 @@
|
||||||
<test>
|
<test>
|
||||||
<sunit>Osmo.SIPGrammarTest</sunit>
|
<sunit>Osmo.SIPGrammarTest</sunit>
|
||||||
<sunit>Osmo.SIPParserTest</sunit>
|
<sunit>Osmo.SIPParserTest</sunit>
|
||||||
|
<sunit>Osmo.SIPRequestTest</sunit>
|
||||||
<filein>grammar/SIPGrammarTest.st</filein>
|
<filein>grammar/SIPGrammarTest.st</filein>
|
||||||
<filein>callagent/SIPParserTest.st</filein>
|
<filein>callagent/SIPParserTest.st</filein>
|
||||||
|
<filein>callagent/Tests.st</filein>
|
||||||
</test>
|
</test>
|
||||||
</package>
|
</package>
|
||||||
|
|
Reference in New Issue