When doing a fork() and exec(), two problems existed (Issue 8086):
1) Ignored signals stayed ignored after the exec().
2) Signals could possibly fire between the fork() and exec(), causing Asterisk
signal handlers within the child to execute, which caused nasty race conditions.
Russell Bryant [Sat, 9 Dec 2006 16:04:06 +0000 (16:04 +0000)]
Merged revisions 48363 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r48363 | russell | 2006-12-09 10:59:42 -0500 (Sat, 09 Dec 2006) | 8 lines
Use locking when accessing the registrations list. This list is not actually
used very often, so the likelihood of there being a problem is pretty small,
but still possible. For example, if the CLI command to list the registrations
was called at the same time that a reload was occurring and the registrations
list was getting destroyed and rebuilt, a crash could occur.
In passing, go ahead and convert this list to use the linked list macros.
Russell Bryant [Sat, 9 Dec 2006 07:10:55 +0000 (07:10 +0000)]
chan_iax2 has an extremely large function, socket_process(), to handle incoming
frames. The function, before this commit, was roughly 1400 lines long. So, I
am working on breaking this up into functions so that the code is easier to
follow and debug. Also, I will be committing these changes in chunks as I do
them to ease tracking down any potentially introduced problems.
Break out roughly 150 lines from socket_process() and introduce a new function,
socket_process_meta() which handles the parsing of an incoming meta frame.
Also, restructure some of this code a bit to reduce the deep nesting that was
in this code.
Russell Bryant [Sat, 9 Dec 2006 05:04:38 +0000 (05:04 +0000)]
- Fix a few spelling mistakes
- Use sizeof() to pass an array size to a function
- Use a single bit for a variable in the chan_iax2_pvt stuct since that is all
it needs.
- Add some comments about the iaxs, iaxl, and lastused arrays.
Luigi Rizzo [Thu, 7 Dec 2006 16:42:29 +0000 (16:42 +0000)]
- Generalize the function ssl_setup() so that the certificate info
are passed as an argument.
- Update the code in main/http.c to use the new interface
(the diff is large but mostly mechanical, due to the name change of
several variables);
- And since now it is trivial, implement "AMI over TLS", and document
the possible options in manager.conf
- And since the test client (openssl s_client -connect host:port )
does not generate \r\n as a line terminator, make get_input()
also accept just a \n as a line terminator (Mac users: do you
also need the \r-only version ?)
The option parsing in manager.conf is not very efficient, and needs
to be cleaned up and made similar to what we have in http.conf
Doxygen update
- Document cause codes
- Document a bit more on channel variables - global, predefined and local
- Fix some doxygen in channel.h. Adding one comment for two definitions does not
work. They won't be copied to each.
................
r47995 | murf | 2006-11-24 10:40:49 -0700 (Fri, 24 Nov 2006) | 1 line
This fix inspired by a patch supplied in bug 8189, which points out problems with the PLC code
................
r47997 | murf | 2006-11-24 11:17:25 -0700 (Fri, 24 Nov 2006) | 1 line
removed the svnmerge-integrated property from trunk; it's confusing svnmerge in newly created branches
................
r48001 | rizzo | 2006-11-25 02:02:42 -0700 (Sat, 25 Nov 2006) | 5 lines
set pointers to NULL after freeing memory to avoid multiple free()
probably 1.4/1.2 issue as well if someone can look into that.
- Adding comment on suspicious memory allocation. Seems like it's never freed, but I don't
have a clear understanding of the frame allocation/deallocation, so I just mark this
for investigation. (Reported by Ed Guy). We're trying to see if a free() hurts...
- Doxygen comments on p2p rtp bridge stuff. I am a bit worried about shortcutting
rtcp this way, but will need feedback from rtcp gurus. This should work for
video calls too, and possibly UDPTL.
generalize a bit the functions used to create an tcp socket
and then run a service on it.
The code in manager.c does essentially the same things,
so we will be able to reuse the code in here (probably
moving it to netsock.c or another appropriate library file).
................
r48009 | mattf | 2006-11-25 13:30:04 -0700 (Sat, 25 Nov 2006) | 1 line
Updates to show linkset command
................
r48010 | mattf | 2006-11-25 13:54:38 -0700 (Sat, 25 Nov 2006) | 2 lines
Add ss7 show linkset command
................
r48011 | mattf | 2006-11-25 14:32:33 -0700 (Sat, 25 Nov 2006) | 1 line
Make sure we don't send a group reset on a group larger than 32 CICs
................
r48012 | mattf | 2006-11-25 14:35:23 -0700 (Sat, 25 Nov 2006) | 1 line
bug fix
................
r48013 | mattf | 2006-11-25 14:46:58 -0700 (Sat, 25 Nov 2006) | 1 line
Make compiler happier
................
r48014 | mattf | 2006-11-25 14:50:42 -0700 (Sat, 25 Nov 2006) | 1 line
Little fix so we use the right message
................
r48016 | murf | 2006-11-25 17:15:42 -0700 (Sat, 25 Nov 2006) | 9 lines
Merged revisions 48015 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r48015 | murf | 2006-11-25 17:01:34 -0700 (Sat, 25 Nov 2006) | 1 line
A little bit of func_cdr documentation upgrade-- no bug# involved, although 8221 may have inspired it.
........
Merged revisions 48017 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r48017 | murf | 2006-11-25 17:26:16 -0700 (Sat, 25 Nov 2006) | 1 line
might as well also document the raw values of the flag vars
........
................
r48019 | russell | 2006-11-25 23:55:33 -0700 (Sat, 25 Nov 2006) | 6 lines
- Add some comments on thread storage with a brief explanation of what it is
as well as what the motivation is for using it.
- Add a comment by the declaration of ast_inet_ntoa() noting that this function
is not reentrant, and the result of a previous call to the function is no
longer valid after calling it again.
Luigi Rizzo [Wed, 6 Dec 2006 20:46:01 +0000 (20:46 +0000)]
remove duplicated code to start the server threads, use
the infrastructure exposed in http.c earlier today.
As a bonus, now we can restart the session on a different
port just reloading the module.
On passing, fix a bug in the handling of 'enabled' in the configuration
file - previously, a missing "enabled=" line in manager.conf meant
"whatever the state was before" instead of a specific value.
Luigi Rizzo [Wed, 6 Dec 2006 18:45:19 +0000 (18:45 +0000)]
Part of the transformations necessary to add TLS support,
as described in
http://lists.digium.com/pipermail/asterisk-dev/2006-December/025213.html
In detail, this commit does the following:
b) change the function get_input() to use fread() instead of read()
to collect the data. One can still do the ast_wait_for_input() on
the original descriptor returned by accept().
c) change the function send_string() to work on the FILE *.
As a side effect, this change now really guarantees that
we don't spend more than "writetimeout" milliseconds on
each line sent.
d) modify the function action_command() so that it creates a
temporary file descriptor to be passed to ast_cli_command(),
and then read back the data from the temp file and write it
to the output with send_string(). The code is similar to
what is done in generic_http_callback() to support AMI-over-HTTP.
Luigi Rizzo [Wed, 6 Dec 2006 16:17:57 +0000 (16:17 +0000)]
Make externally visible some generic code useful to create
and implement services over tcp and/or tcp-tls.
This commit is nothing more than moving structure definitions
(and documentation) from main/http.c to include/asterisk/http.h
(temporary location until we find a better place), and removing the
'static' qualifier from server_root() and server_start().
The name change (adding the ast_ prefix as a minimum, and then
possibly a more meaningful name) is postponed to future commits.
Jason Parker [Tue, 5 Dec 2006 20:15:37 +0000 (20:15 +0000)]
Expand on r48273 (from issue 8506), to translate more of the fskmodem stuff to English.
r48273 dealt with the comments and such, this deals with the code itself.
(This couldn't have been easily done if it weren't for 48273 - thanks again for that merbanan)
Olle Johansson [Tue, 5 Dec 2006 10:52:53 +0000 (10:52 +0000)]
Reserving flags for coming code (currently in the "videocaps" branch)
implementing T.140 support in RTP.
T.140/RFC 4351 is TDD over IP - text telephony for hearing impaired.
It defines a realtime text chat, much like the old "talk" application
in Unix.
T.140 is character by character in real time. It's not
the same as our current MESSAGE format - that is more like IM, but
can be gatewayed to MESSAGE with a text "codec" if needed.
More patches will follow, as soon as we've separated this code from
the video capabilities functions in the videocaps branch.
If the recording in the database is too large, it will fail to retrieve with
an mmap error. Not too sure why this doesn't happen when we put it in the
database, also, but since that doesn't seem to be broken, I'm not going to fix
it (at least until someone reports it). Solution is to ask for the file in
smaller chunks. (Bug 8385)
If the generic bridge tells us not to retry, and we have a frame to spit out then break the bridge. Props to markit in #asterisk-bugs for bringing this up.
Olle Johansson [Sat, 2 Dec 2006 12:05:40 +0000 (12:05 +0000)]
- Disable RTP timeouts during T.38 transmission
- Encapsulate RTP timers to the RTP structure, so we have one set for video and one for audio
- Document RTP keepalive configuration option
- Cleanup and document the monitor support function to hangup on RTP timeouts
- Add RTP keepalive to SIP show settings
if Dial() is going to send music-on-hold to the calling party, it has to send PROGRESS first to ensure that the reverse audio path has been setup first (BE-106)
Russell Bryant [Fri, 1 Dec 2006 23:20:17 +0000 (23:20 +0000)]
Merged revisions 48190 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r48190 | russell | 2006-12-01 18:16:28 -0500 (Fri, 01 Dec 2006) | 12 lines
FreeBSD 6.1 does not include wget by default. However, it has fetch which will
work just fine for our purposes of downloading the sounds packages. So, check
for both wget and fetch and the configure script and use what was found to
download them. If neither one was found, and sound packages are selected that
must be downloaded, the install process will print out an informative error
message indicating the situation.
Also, fix a couple places where "make" was hard coded into some output messages
by replacing them with the $(MAKE) variable.
(issue #8451, initial patch by pabelanger, with additional modifications by me)
Do not listen for DTMF on the bridge that comes into existence when ParkedCall is executed. This means native bridging can now occur for this. (issue #8406 reported by kebl0155)
Print certain CDR messages out at the NOTICE level versus WARNING since they can occur when used with the CDR applications and are perfectly fine. (issue #8367 reported by dartvader)
Joshua Colp [Thu, 30 Nov 2006 03:29:42 +0000 (03:29 +0000)]
I am pretty sure that oej only meant to change the variable name in the source, not the configuration option name so let's turn it back to srvlookup instead of global_srvlookup. (issue #8442 reported by jtodd)
Russell Bryant [Wed, 29 Nov 2006 17:59:13 +0000 (17:59 +0000)]
- Fix a few spelling mistakes.
- Add some more documentation for the ast_dynamic_str_............() function
to document the behavior of the function in the case of a partial write.
Also, document the return value and note that the function should never need
to be called directly.
Russell Bryant [Wed, 29 Nov 2006 17:37:31 +0000 (17:37 +0000)]
Go ahead and make this write unconditional. Making it conditional is more work
in both the append and non-append modes. Also, always truncating the partial
write makes the behavior of the function more consistent, where in any type of
write, no partial result is left in the buffer.
Russell Bryant [Wed, 29 Nov 2006 05:08:19 +0000 (05:08 +0000)]
Remove an XXX command suggesting that this truncation should not be conditional,
and also add a more verbose comment explaining why it is only needed in the
case of appending to the string for any curious readers that come along in the
future.
Luigi Rizzo [Tue, 28 Nov 2006 17:08:19 +0000 (17:08 +0000)]
don't use outputstr in the struct mansession, it's just
an extra allocation on a path where we have way too many already.
Unfortunately the AMI-over-HTTP requires multiple copies,
because we need to generate a header, then the raw output to
an intermediate buffer, then convert it to html/xml, and
finally copy everything into a malloc'ed buffer because
that's what the generic_http_callback interface expects.
Luigi Rizzo [Tue, 28 Nov 2006 11:20:39 +0000 (11:20 +0000)]
Move the code to purge stale sessions to a function,
to simplify the body of the main loop of the accepting thread.
Rename purge_unused() to purge_events() so one knows what the
function does.
Luigi Rizzo [Tue, 28 Nov 2006 10:23:25 +0000 (10:23 +0000)]
Various simplifications of the code:
+ use a wrapper around ast_carefulwrite(), used in two places,
to make life easier when we decide to use a different interface
to the socket.
+ put an ast_verbose() message on astman_append on a case that
should never happen now that we use a temporary file for
AMI-over-HTTP sessions
+ document and slightly simplify process_events() by removing
unnecessary parentheses.
+ in get_input(), use ast_wait_for_input() instead of poll().