avoid doing p > 0 when p is a pointer;
move a lock closer to the place where it is needed
Approved By: oej
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@47318 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Same as for peers and users, replace ASTOBJ_UNREF(r, sip_registry_destroy)
with unref_registry(r);
Approved By: oej
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@47317 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Replace ASTOBJ_UNREF(peer, sip_destroy_peer) with unref_peer(peer);
This places the name of the destructor in one place only (where it
should be), eliminates the chance of errors in case you specify the wrong
destructor, and also lets the compiler do type checking on the argument,
again helping with keeping the code clean.
Same for users.
remove two duplicate definitions.
Approved By: oej
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@47316 65c4cc65-6c06-0410-ace0-fbb531ad65f3
to the peer side of a type=friend.
This is for trying to support BJ in his quest to solve some issues
with the queue system and type=friend objects.
BJ: Please test!
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@47201 65c4cc65-6c06-0410-ace0-fbb531ad65f3
e.g. in the Manager interface. This information is available as
a callerid (or something like that) during a call, but not when a
device is registered but silent.
It may be useful to have it available e.g. when developing a user
interface/operator panel, to map numbers to names.
experimental, so not committed to 1.4
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@47093 65c4cc65-6c06-0410-ace0-fbb531ad65f3
is to the person that configures asterisk. That we use it internally in the
contact header is a totally different story.
Still not convinced this is a good option.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@46489 65c4cc65-6c06-0410-ace0-fbb531ad65f3
- removing transmit_reinvite_with_t38_sdp in favour of adding an argument to
transmit_reinvite_with_sdp
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@46385 65c4cc65-6c06-0410-ace0-fbb531ad65f3
lock when needed - when we remove the dialog from the dialog list
If this doesn't lead to severe problems, it might help with some locking issues
in 1.4/1.2.
- Remove the term "interface" as a synonym for a SIP dialog. Sorry, Mark, but no
one understands it... ;-)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@46379 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r46082 | kpfleming | 2006-10-23 22:45:42 -0500 (Mon, 23 Oct 2006) | 2 lines
add an API call to allow channel drivers to determine which media formats are compatible (passthrough or transcode) with the format an existing channel is already using
........
r46083 | kpfleming | 2006-10-23 22:53:32 -0500 (Mon, 23 Oct 2006) | 2 lines
ensure that the translation matrix is properly lock-protected every place it is used
........
r46152 | kpfleming | 2006-10-24 18:45:19 -0500 (Tue, 24 Oct 2006) | 2 lines
if multiple translators are registered for the same source/dest combination, ensure that the lowest-cost one is always inserted earlier in the list
........
r46153 | kpfleming | 2006-10-24 19:10:54 -0500 (Tue, 24 Oct 2006) | 2 lines
code zone experiment: don't offer formats in the outbound INVITE that aren't either passthrough or translatable
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@46203 65c4cc65-6c06-0410-ace0-fbb531ad65f3
appreciated really. (Read the coding guidelines).
I've worked hard to make chan_sip a better place to code in, let's
keep it that way and don't add more stuff without comments.
Thank you.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@46183 65c4cc65-6c06-0410-ace0-fbb531ad65f3
so fix the places where this might happen.
This is also a fix that ought to go into 1.4
[The difference between the two functions is a bit confusing,
and in asterisk i believe all string handling functions
should be able to handl a NULL string as argument,
but changing the API in trunk and not in 1.4 would make
backporting harder.]
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@46045 65c4cc65-6c06-0410-ace0-fbb531ad65f3
As discussed on the mailing lists, 0 is a legal value
for Cseq, so there is no point to treat it specially.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@46035 65c4cc65-6c06-0410-ace0-fbb531ad65f3
for NULL is certainly wrong and usually disables the
checks that we want to make instead.
This commit fixes a number of the above bugs where the result
of get_header() is immediately checked for NULL.
This is certainly a candidate for merging into 1.4
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@46026 65c4cc65-6c06-0410-ace0-fbb531ad65f3
On passing, remove a wrong comment (that probably I wrote
myself!) and introduce a temporary variable to avoid a
misleading cast.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@46003 65c4cc65-6c06-0410-ace0-fbb531ad65f3
simplifies its usage.
+ add another client for parse_uri, in handling Contact: strings
(on passing, document the content of the "fullcontact" field);
+ in register_verify(), mark with XXX what i believe is another
misinterpretation on the URI format when '@' is missing.
No code changed here, so no fixes applied.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45977 65c4cc65-6c06-0410-ace0-fbb531ad65f3
fix parse_uri() to interpret a missing userinfo
section as a domain-only URI, and comment a wrong
interpretation of the above in check_user_full().
The function has been patched to preserve the existing
behaviour (in what admittedly is a corner case, but
could be received under attacks).
Hopefully the From: based matching will go away soon!
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45976 65c4cc65-6c06-0410-ace0-fbb531ad65f3
before splitting around the @, otherwise the refer_to_domain
might contain arguments as well, causing failures.
I think this is a true bug that ought to be fixed in 1.4 as well.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45966 65c4cc65-6c06-0410-ace0-fbb531ad65f3
introducing the function parse_uri() that splits
a URI in its components.
Right now use it only in one place, because the custom
parsing that is done here and there sometimes has
bugs that i want to figure out first.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45965 65c4cc65-6c06-0410-ace0-fbb531ad65f3
apart from a small (but disabled by default) new option.
In detail:
+ introduce a new value for enum check_auth_result, AUTH_DONT_KNOW,
used (read below) when a function does not have a conclusive response.
Possibly this is the same as AUTH_NOT_FOUND, but need to check further.
+ move the large blocks (checking in the users list and in the peers
list, respectively) from check_user_full() to separate functions.
They return AUTH_DONT_KNOW in case they don't find a match, so
the caller know that it has to try the next method.
There is still some duplication of code here, but i
have not tried yet to remove it.
+ [new option] a new option in sip.conf, match_auth_username,
has been introduced, and disabled by default.
If set, and the incoming request carries authentication info,
the username to match in the users list is taken from there
rather than from the From: field.
This change is easy to identify, being made of
- one line to declare the variable match_auth_username
- a block of 15 lines in check_user_full()
- one line in sip list settings
- two lines for parsing the config file.
check_user_full() is now a lot cleaner - basically a sequence of
checks that are applied to the request. This will help future
work with new matching schemes.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45945 65c4cc65-6c06-0410-ace0-fbb531ad65f3
A large block needs reindentation now, but we don't do that because
it can be moved to a separate function.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45905 65c4cc65-6c06-0410-ace0-fbb531ad65f3
lock these data structures.
This improve readability, and also hides the underlying
locking mechanism so it is a lot easier to add diagnostic
code, or move the object locks somewhere else, etc.
On passing, rename the lock field in sip_pvt to pvt_lock,
also for ease of readability.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45786 65c4cc65-6c06-0410-ace0-fbb531ad65f3
allow custom threadstorage init functions to return failure
use a custom init function for chan_sip's temp_pvt, to improve performance a bit
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45634 65c4cc65-6c06-0410-ace0-fbb531ad65f3
be called for each thread specific object after they are allocated. Note that
there was already the ability to define a custom cleanup function. Also, if
the custom cleanup function is used, it *MUST* call free on the thread
specific object at the end. There is no way to have this magically done that
I can think of because the cleanup function registered with the pthread
implementation will only call the function back with a pointer to the
thread specific object, not the parent ast_threadstorage object.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45623 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r45408 | kpfleming | 2006-10-17 17:24:10 -0500 (Tue, 17 Oct 2006) | 3 lines
optimize the 'quick response' code a bit more... no more malloc() or memset() for each response
expand stringfields API a bit to allow reusing the stringfield pool on a structure when needed, and remove some unnecessary code when the structure was being freed
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45409 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r45378 | file | 2006-10-17 16:30:34 -0400 (Tue, 17 Oct 2006) | 2 lines
Don't create a "real" pvt structure for requests that shouldn't be able to create one. Instead use a temporary pvt and fill it with enough information so we can send a reply.
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45379 65c4cc65-6c06-0410-ace0-fbb531ad65f3
I *know* it is not required, but it makes navigation easier and will help
when splitting up this large source code file.
Thank you!
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45209 65c4cc65-6c06-0410-ace0-fbb531ad65f3
necessary - rather, cast the argument to int.
In this case, the string is in a UDP packet and as such
limited to 64k so its length can be safely represented in an int
without truncation (besides, this is just a debugging message!)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45010 65c4cc65-6c06-0410-ace0-fbb531ad65f3
To avoid the same mistake in the future (due to slightly
confusing variable names), add a comment.
On passing, remove a redundant initialization.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45009 65c4cc65-6c06-0410-ace0-fbb531ad65f3
and friends in a function, auth_headers(), which is used to
simplify the interface of do_{proxy|register}_auth().
+ use PROXY_AUTH = 407, WWW_AUTH = 401 as values for enum sip_auth_type;
No functional change, only code cleanup.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@44933 65c4cc65-6c06-0410-ace0-fbb531ad65f3
authentication issues. This was committed in revision 44844, where the commit
message was just "small formatting cleanup", so I am pretty sure he didn't mean
to commit this part.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@44876 65c4cc65-6c06-0410-ace0-fbb531ad65f3
and rename the old DEFAULT_SIP_PORT as STANDARD_SIP_PORT
to make it clear that this is not something we can change,
unlike other defaults.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@44774 65c4cc65-6c06-0410-ace0-fbb531ad65f3
that, but the protocol clearly states that if we DO NOT mention a port it
is 5060. DEFAULT_SIP_PORT is whatever we default to listen to.
I believe it's the third time I revert a patch like this.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@44697 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1. slightly rearrange/simplify the parsing of the argument in sip_register.
This brings in a patch that has been in Mantis (5834) for ages,
and is the larger part of the commit;
2. implement the "contact" option for peers, similar to the one in users.conf:
If you put a "contact" option with a non-empty argument (e.g. contact=123)
in a peer section, asterisk will register with the provider as if you had a
register= username:secret@host/contact
line in the general section.
The latter is a very small is a new feature so i am not putting it
in the 1.4 branch, although the "contact" option in user.conf is
already in the 1.4 branch and so it wouldn't be too strange to
merge it.
Note that the implementation of "contact" is much simpler than
the one in 5834, and limited to a few lines in build_peer().
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@44566 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r44378 | kpfleming | 2006-10-04 14:47:22 -0500 (Wed, 04 Oct 2006) | 4 lines
update thread creation code a bit
reduce standard thread stack size slightly to allow the pthreads library to allocate the stack+data and not overflow a power-of-2 allocation in the kernel and waste memory/address space
add a new stack size for 'background' threads (those that don't handle PBX calls) when LOW_MEMORY is defined
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@44379 65c4cc65-6c06-0410-ace0-fbb531ad65f3