Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
When executing multiple tests we might not have the collection we
want anymore. Some tests don't stop all the timers so we have a
retransmit and this would cause an exception and log spam.
|
|
|
|
We need >>#do: as nextPutAllOn: is not called/doesn't exist in
this dialect.
|
|
Modernize the tests to use the >>#assert:equals: protocol as
this allows creating/finding failing tests earlier.
|
|
Avoid porting issue with the MIMERWStream and just kill the method
|
|
|
|
|
|
PetitParser has a PPContext in newer versions but the GST code
is older and doesn't have it. Provide an alternative impl.
Provide >>#do: for the SIPVia for Pharo to print the data
Avoid importing MIMERWStream as it is dead in Pharo
|
|
Depending on the host OS localhost might resolve to something
we can't handle properly. In a FreeBSD jail this started to
behave oddly. There is no point to force AF_INET6 for this
test.
open("/etc/hosts",O_CLOEXEC,0666) = 3 (0x3)
fstat(3,{ mode=-rw-r--r-- ,inode=12621,size=1138,blksize=4096 }) = 0 (0x0)
read(3,"# $FreeBSD: src/etc/hosts,v 1.16"...,4096) = 1138 (0x472)
read(3,0x80282e000,4096) = 0 (0x0)
close(3) = 0 (0x0)
__sysctl(0x7fffffffaff0,0x4,0x0,0x7fffffffb070,0x0,0x0) = 0 (0x0)
__sysctl(0x7fffffffaff0,0x4,0x82b0aa300,0x7fffffffb070,0x0,0x0) = 0 (0x0)
socket(PF_INET6,0x10000002,17) = 3 (0x3)
connect(3,{ AF_INET6 [::1]:1 },28) = 0 (0x0)
getsockname(3,{ AF_INET6 [2a01:4f8:150:70c4::5:2]:55378 },0x7fffffffafec) = 0 (0x0)
ioctl(3,SIOCGIFAFLAG_IN6,0xffffaec8) ERR#6 'Device not configured'
close(3) = 0 (0x0)
socket(PF_INET6,0x10000002,17) = 3 (0x3)
connect(3,{ AF_INET6 [::1]:1 },28) = 0 (0x0)
getsockname(3,{ AF_INET6 [2a01:4f8:150:70c4::5:2]:14967 },0x7fffffffafec) = 0 (0x0)
ioctl(3,SIOCGIFAFLAG_IN6,0xffffaec8) ERR#6 'Device not configured'
close(3) = 0 (0x0)
socket(PF_INET6,0x10000002,17) = 3 (0x3)
connect(3,{ AF_INET6 [::1]:1 },28) = 0 (0x0)
getsockname(3,{ AF_INET6 [2a01:4f8:150:70c4::5:2]:39503 },0x7fffffffafec) = 0 (0x0)
ioctl(3,SIOCGIFAFLAG_IN6,0xffffaec8) ERR#6 'Device not configured'
close(3) = 0 (0x0)
|
|
On the sysmoBTS (ARM7TDMI) the parsing of a simple response
with quoted string takes up to 200ms. Parsing the single
digest line takes 40ms itself. Create a custom parser to
speed things up to avoid the backtracking between three
optional parsers that are combined in a choice.
|
|
|
|
The code does not verify that sessionFailed is called but it
does verify that the dialogue is scheduled for removal and
that 487/200 is returned.
|
|
* Do not use >>#instVarNamed:put: but add selectors
* Pre-allocate some arrays with a default string to avoid
re-allocations at the start
* Share same parser trees to avoid construction costs
* Remove some lazy allocation and always allocate it
|
|
In the SIPDialog we need to switch from/to to send messages
from the right "From" but for a response we musn't do that.
YATE doesn't like if we respond with From/To mixed to their
BYE request.
|
|
Creating a PetitParser is expensive due the usage of >>#become:
so let us re-use the one from the SIPCallAgent.
|
|
So this code acks the 401 Unauthorized message. It is possible
that this message is lost on the way we will not be able to
respond to the 401 again. The right thing would be to "fork" off
the transaction to deal with re-transmissions.
|
|
|
|
|
|
In case the remote will do a re-invite to verify that we are
still aware of the call we need to handle >>#sessionAcked:dialog:
This probably got introduced when I introduced the incoming
call support that will send a 200 and receive the ACK.
The incoming call will print a warning that session->session is
not a valid state transition but nothing bad will happen.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
E.g. the hangup could have failed due the other side already
having hung up but at some point we need to stop caring about
it.
|
|
|
|
|
|
It looks like "domain" is not proper in yate. Just parse it as
numbers and words.
|
|
|
|
|
|
This way we can fully handle a session once the sessionNew selector
is called by the code.
|
|
|
|
What is probably missing is to start a timer in case something
is not acked to have a call timedout and to send a failure message
to the other side.
|
|
In case our reject does not arrive and is re-transmitted we
should reject it too.
* Modify SIPDialog>>#checkCompatible. We have to accept that
the remote does not know the tag we assigned. Be more forgiving
* Send the INVITE again and count our rejects.
|
|
Create a SIPIncomingCall and register the dialog. The "Via" and
remote handling is broken. The "respond with" is broken too. The
whole dialog/request passing to the UserAgent is broken and needs
to be fixed.
|
|
I nee to differentiate between incoming and outgoing calls. At
the same time a lot of logic can be shared. Specially at the
time the call is established the hangup will work the same on
both sides.
|
|
|
|
Add a new test, inject a SIP Invite. Verify that the SIPUserAgent
rejects the invite.
|
|
A rule like "ANY star / quoted_string" will only parse the ANY
rules for '0' times. Change the order to avoid this and add a
small test that we properly parse the From address now.
|
|
token requires the presence of at least one match. The usage of
star has been wrong and is corrected now. This was seen due not
being able to parse a From address that included a diplay name.
Remove the trailing ";" to fix the parsing bug.
|
|
The code allows (and that looks like a good thing) to have a different
from and username in the authorization. The userString was not really
right as it was missing the URL part (sip/sips) and the splitting was
broken as well.
|
|
|
|
This way the one that creates a dialog needs to decide which
identity will be used.
|
|
|
|
In preparation of introducing multiple identities we need to
remove usage of SIPUserAgent>>#username. The next step is to
actually be able to pass a different identity.
|
|
Make it possible that the proxy username and password is different
to the identity of the user.
|
|
The Transport to UserAgent relationship is a one to one. E.g. we
need this to generate unique branch and call-ids to make sure the
dialogues are different. To be able to use multiple identities I
introduce a SIPIdentity class. Currently the user agent has one
main identity but this could change over time.
|
|
The whole response handling code was broken. Make sure to increase
the test coverage of the system.
|