Commit Graph

89 Commits

Author SHA1 Message Date
Steve Murphy
13a60eba0c This patch fixes h-exten running misbehavior in manager-redirected
situations.

What it does:
1. A new Flag value is defined in include/asterisk/channel.h,
 AST_FLAG_BRIDGE_HANGUP_DONT, which used as a messenge to the
 bridge hangup exten code not to run the h-exten there (nor
 publish the bridge cdr there). It will done at the pbx-loop
 level instead.
2. In the manager Redirect code, I set this flag on the channel
 if the channel has a non-null pbx pointer. I did the same for the
 second (chan2) channel, which gets run if name2 is set...
 and the first succeeds.
3. I restored the ending of the cdr for the pbx loop h-exten
 running code. Don't know why it was removed in the first place.
4. The first attempt at the fix for this bug was to place code
   directly in the async_goto routine, which was called from a
   large number of places, and could affect a large number of
   cases, so I tested that fix against a fair number of transfer
   scenarios, both with and without the patch. In the process,
   I saw that putting the fix in async_goto seemed not to affect
   any of the blind or attended scenarios, but still, I was
   was highly concerned that some other scenarios I had not tested
   might be negatively impacted, so I refined the patch to 
   its current scope, and jmls tested both. In the process, tho,
   I saw that blind xfers in one situation, when the one-touch
   blind-xfer feature is used by the peer, we got strange 
   h-exten behavior.  So, I  inserted code to swap CDRs and
   to set the HANGUP_DONT field, to get uniform behavior.
5. I added code to the bridge to obey the HANGUP_DONT flag,
   skipping both publishing the bridge CDR, and running
   the h-exten; they will be done at the pbx-loop (higher)
   level instead.
6. I removed all the debug logs from the patch before committing.
7. I moved the AUTOLOOP set/reset in the h-exten code in res_features
   so it's only done if the h-exten is going to be run. A very
   minor performance improvement, but technically correct.


(closes issue #14241)
Reported by: jmls
Patches:
      14241_redirect_no_bridgeCDR_or_h_exten_via_transfer uploaded by murf (license 17)
Tested by: murf, jmls



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@172030 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-01-28 18:51:16 +00:00
Tilghman Lesher
f311539733 Truncate userevents at the end of a line, when the command exceeds the buffer.
(closes issue #14278)
 Reported by: fnordian


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@169364 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-01-19 19:49:25 +00:00
Russell Bryant
aa60ad0e43 Add "restart gracefully" to the AMI blacklist of CLI commands.
"module unload" was already identified as a command that can not be used 
from the AMI.  "restart gracefully" effectively unloads all modules, and will 
run in to the same problems.

(closes issue #13894)
Reported by: kernelsensei


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@164806 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-16 20:35:25 +00:00
Michiel van Baak
8f27432e76 Get rid of the useless format string and argument in the Bogus/ manager channelname.
Noted by kpfleming and name Bogus/manager suggested by eliel


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@159976 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-01 16:08:36 +00:00
Michiel van Baak
1a6c64660d make manager compile on OpenBSD.
The last (10th) argument to ast_channel_alloc here should be a pointer
and NULL is not really a pointer.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@159897 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-01 14:05:41 +00:00
Tilghman Lesher
ad1cd04005 Provide more space for all the data which can appear in an originating
channel name.
(closes issue #13398)
 Reported by: bamby
 Patches: 
       manager.c.diff uploaded by bamby (license 430)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@156688 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-11-13 21:24:00 +00:00
Kevin P. Fleming
add5ff5b05 fix a bunch of potential problems found by gcc 4.3.x, primarily bare strings being passed to printf()-like functions and ignored results from read()/write() and friends
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@153337 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-11-01 18:22:39 +00:00
BJ Weschke
4ac62c324b Using the GetVar handler in AMI is potentially dangerous (insta-crash [tm]) when you use a dialplan function that requires a channel and then you don't provide one or provide an invalid one in the Channel: parameter. We'll handle this situation exactly the same way it was handled in pbx.c back on r61766.
We'll create a bogus channel for the function call and destroy it when we're done. If we have trouble allocating the bogus channel then we're not going to try executing the function call at all and run the risk of crashing.
 (closes issue #13715)
 reported by: makoto
 patch by: bweschke


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@150816 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-10-18 01:42:23 +00:00
Mark Michelson
47cf653623 Reverting changes from commits 150298 and 150301 since
I was mistakenly under the assumption that dialplan functions
*always* required that a channel be present. I need to go
home earlier, I think :)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@150304 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-10-16 23:40:54 +00:00
Mark Michelson
d61eb37af6 And don't forget to return on the error condition
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@150301 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-10-16 23:35:07 +00:00
Mark Michelson
e9035cc286 Don't try to call a dialplan function's read callback from
the manager's GetVar handler if an invalid channel has
been specified. Several dialplan functions, including
CHANNEL and SIP_HEADER, do not check for NULL-ness of
the channel being passed in.

(closes issue #13715)
Reported by: makoto



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@150298 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-10-16 23:34:37 +00:00
Mark Michelson
e1b81179dc After working on the ao2_containers branch, I noticed
something a bit strange. In all cases where we provide
a callback function to ao2_container_alloc, the callback
function would only return 0 or CMP_MATCH. After inspecting
the ao2_callback() code carefully, I found that if you're
only looking for one specific item, then you should return
CMP_MATCH | CMP_STOP. Otherwise, astobj2 will continue
traversing the current bucket until the end searching for
more matches.

In cases like chan_iax2 where in 1.4, all the peers are
shoved into a single bucket, this makes for potentially
terrible performance since the entire bucket will be
traversed even if the peer is one of the first ones come
across in the bucket.

All the changes I have made were for cases where the 
callback function defined was passed to ao2_container_alloc
so that calls to ao2_find could find a unique instance
of whatever object was being stored in the container.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@140488 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-08-29 17:34:17 +00:00
Jeff Peeler
a25c32289b Fix a typo I made. Lesson learned, apply the patch if one exists.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@139927 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-08-25 21:47:33 +00:00
Jeff Peeler
d2a637a424 (closes issue #13359)
Reported by: Laureano
Patches:
      originate_channel_check.patch uploaded by Laureano (license 265)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@139621 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-08-22 21:36:13 +00:00
Tilghman Lesher
da57d237e6 Specify codecs in callfiles and manager, to allow video calls to be set up
from callfiles and AMI.
(closes issue #9531)
 Reported by: Geisj
 Patches: 
       20080715__bug9531__1.4.diff.txt uploaded by Corydon76 (license 14)
       20080715__bug9531__1.6.0.diff.txt uploaded by Corydon76 (license 14)
 Tested by: Corydon76


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@134976 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-31 21:53:19 +00:00
Tilghman Lesher
9fda1e767c astman_send_error does not need a newline appended -- the API takes care of
that for us.
(closes issue #13068)
 Reported by: gknispel_proformatique
 Patches: 
       asterisk_1_4_astman_send.patch uploaded by gknispel (license 261)
       asterisk_trunk_astman_send.patch uploaded by gknispel (license 261)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@130959 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-15 17:19:13 +00:00
Michiel van Baak
b47deb444c fix memory leak when originate from manager cannot create a thread
(closes issue #13069)
Reported by: gknispel_proformatique
Patches:
      asterisk_trunk_action_originate.patch uploaded by gknispel (license 261)
	  Tested by: gknispel_proformatique, mvanbaak


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@130573 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-13 22:48:51 +00:00
Tilghman Lesher
98b11ad0ee When listing the manager users, managers in users.conf are not shown, even
though they are allowed to connect.
(closes issue #12594)
 Reported by: bkruse
 Patches: 
       12594-managerusers-2.diff uploaded by qwell (license 4)
 Tested by: bkruse


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@120061 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-03 18:23:32 +00:00
Russell Bryant
8a9d52bc7f Improve CLI command blacklist checking for the command manager action. Previously,
it did not handle case or whitespace properly.  This made it possible for blacklisted
commands to get executed anyway.
(closes issue #12765)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@119742 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-02 14:39:45 +00:00
Russell Bryant
f8848a7fe8 Store the manager session ID explicitly as 4 byte ID instead of a ulong. The
mansession_id cookie is coded to be limited to 8 characters of hex, and this
could break logins from 64-bit machines in some cases.
(inspired by AST-20)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@114591 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-23 17:55:31 +00:00
Russell Bryant
c8c2c33550 Don't destroy a manager session if poll() returns an error of EAGAIN.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@114284 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-18 21:48:06 +00:00
Mark Michelson
b4cf033072 Fix a race condition in the manager. It is possible that a new manager event
could be appended during a brief time when the manager is not waiting for input.
If an event comes during this period, we need to set an indicator that there is an
event pending so that the manager doesn't attempt to wait forever for an event that
already happened.

(closes issue #12354)
Reported by: bamby
Patches:
      manager_race_condition.diff uploaded by bamby (license 430)
	  (comments added by me)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@112468 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-02 17:36:04 +00:00
Tilghman Lesher
56e908b787 Safely use the strncat() function.
(closes issue #11958)
 Reported by: norman
 Patches: 
       20080209__bug11958.diff.txt uploaded by Corydon76 (license 14)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@106552 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-03-07 06:36:33 +00:00
Tilghman Lesher
11550c7be6 Ensure the session ID can't be 0.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@104704 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-02-27 18:15:10 +00:00
Kevin P. Fleming
d105ba22fa reduce the likelihood that HTTP Manager session ids will consist of primarily '1' bits
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@104015 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-02-21 14:33:51 +00:00
Pari Nannapaneni
f7eae72a2e missed that one while reverting
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@99010 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-17 23:23:25 +00:00
Pari Nannapaneni
0fed0a955f reverting 99001 - We need the Max-Age for extending the life of cookie mansession_id
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@99007 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-17 23:09:53 +00:00
Kevin P. Fleming
af7670bca8 we should only send the Set-Cookie header to the browser on the first response after creating a manager session, not on every response (doing so causes the browser to clear any local cookies it may have associated with the session)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@99001 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-17 21:31:56 +00:00
Kevin P. Fleming
eb4d447b78 make this comment explain the situation in an even more explicit fashion
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94824 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-27 01:01:47 +00:00
Tilghman Lesher
3c3eb75062 Workaround for what is probably a glibc bug (but we'll see this crop up again
and again, if we don't add the workaround).
Reported by: rolek
Patch by: tilghman
(Closes issue #11601, closes issue #11426)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94808 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-26 20:43:38 +00:00
Russell Bryant
1f8caa100d Change the behavior of ao2_link(). Previously, in inherited a reference.
Now, it automatically increases the reference count to reflect the reference
that is now held by the container.

This was done to be more consistent with ao2_unlink(), which automatically
releases the reference held by the container.  It also makes it so it is
no longer possible for a pointer to be invalid after ao2_link() returns.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90348 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-30 19:26:04 +00:00
Kevin P. Fleming
fc5429da7c it is impossible to set permissions for manager accounts created by users.conf (reported internally, patched by me)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90098 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-28 22:30:46 +00:00
Tilghman Lesher
540a2c7098 Up until this point, the XML output of the manager has been technically
invalid, due to the repetition of certain parameters in a single event.
This caused various issues for XML parsers, some of which refused to parse
at all, given the invalidity of the rendered XML.  So this commit fixes
the XML output, ensuring that each entity parameter has a unique name, thus
ensuring valid XML.
Reported by: msetim
Patch by: tilghman
(Closes issue #10220)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89536 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-23 17:18:26 +00:00
Mark Michelson
1fece3bb67 Undoing previous commit since I realize it was wrong
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89288 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-15 14:57:28 +00:00
Mark Michelson
88f847869d Adding a missing mutex unlock.
(closes issue 11256, reported and patched by ys)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89286 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-15 14:54:10 +00:00
Mark Michelson
63f6e6b023 Fixing a segfault in the manager "core show channels concise" command.
(closes issue #11183, reported by arnd and patched by ys)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89085 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-07 15:56:49 +00:00
Russell Bryant
2c757f0747 Fix a copy/paste error in the description of UpdateConfig that was pointed
out by JerJer on #asterisk-dev


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@84742 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-05 01:39:07 +00:00
Dwayne M. Hubbard
bae4135759 moved get_base_channel() code from action_redirect to ast_channel_masquerade() for issue 7706 and BE-160
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@84274 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-01 21:25:37 +00:00
Dwayne M. Hubbard
7c4e477fde if an Agent is redirected, the base channel should actually be redirected. This was causing multiple issues, especially issue 7706 and BE-160
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@84018 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-27 23:12:25 +00:00
Russell Bryant
df5599d598 Fix up another potential race condition. Do the loop decrementing use count
on events with the eventq protected from being changed.
(reported on IRC by Ivan)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@83121 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-19 15:10:14 +00:00
Doug Bailey
8ac8d79a5d Corrected patch applied in revision r82887.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@82913 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-18 21:49:32 +00:00
Doug Bailey
33a1011c51 Fixed a bug where http manager sessions prevented the eventq from being cleaned out because http manager sessions do not have a valid file descriptor.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@82887 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-18 21:10:14 +00:00
Russell Bryant
4668601f9c Fix a memory leak that can occur on systems under higher load. The issue is
that when events are appended to the master event queue, they use the number
of active sessions as a use count so it will know when all active sessions
at the time the event happened have consumed it.  However, the handling of
the number of sessions was not properly synchronized, so the use count was
not always correct, causing an event to disappear early, or get stuck in
the event queue for forever.

(closes issue #9238, reported by bweschke, patch from Ivan, modified by me)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@82867 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-18 20:56:43 +00:00
Jason Parker
24f0e6a947 Eliminate a compiler warning with gcc 4.2 by constifying a char *
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@76176 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-20 20:54:10 +00:00
Russell Bryant
76164559c9 Remove a bogus comment and add proper locking to the handler function for the
CLI command to show information on manager actions.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@72926 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-02 18:18:46 +00:00
Tilghman Lesher
6ffbaa32f3 Issue 10055 - Change memory allocation to use the heap for a command, since the output has the potential to overflow the stack (as it did here)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@72556 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-29 04:47:11 +00:00
Tilghman Lesher
2e702c85eb Merged revisions 71288 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r71288 | tilghman | 2007-06-24 12:32:21 -0500 (Sun, 24 Jun 2007) | 2 lines

Issue 10043 - There is a legitimate need to be able to set variables to the empty string.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@71289 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-24 17:39:34 +00:00
Joshua Colp
533144b170 Add the ability to blacklist certain commands from being executed using the Command AMI action. (issue #9240 reported by junky)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@65902 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-05-24 15:27:23 +00:00
Jason Parker
e0cac0c477 Hide manager password from "manager show user foo".
I realize that there are other ways to get this,
 but we really don't need to just show it in plain text so easily.

Issue 9273, patch by junky


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@63982 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-05-11 20:16:17 +00:00
Russell Bryant
7d478ee342 When MD5 authentication is not possible because there is no challenge present,
either because the Challenge action was never issued, or some other reason,
give a proper error message and return an error instead of claiming that the
user wasn't found.
(reported by jsmith on IRC)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@63886 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-05-11 16:05:43 +00:00