mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-03 20:38:59 +00:00 
			
		
		
		
	Compare commits
	
		
			211 Commits
		
	
	
		
			certified/
			...
			1.2.4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					7e57f9f920 | ||
| 
						 | 
					e99d0fb72f | ||
| 
						 | 
					05fefc162a | ||
| 
						 | 
					48fb967c05 | ||
| 
						 | 
					e74a7116e5 | ||
| 
						 | 
					fd25b81993 | ||
| 
						 | 
					dcd9d8d58f | ||
| 
						 | 
					1d9b2a9df1 | ||
| 
						 | 
					659da47b95 | ||
| 
						 | 
					e83bfee678 | ||
| 
						 | 
					ab209c7d92 | ||
| 
						 | 
					dc08bd8501 | ||
| 
						 | 
					aca3c1f79d | ||
| 
						 | 
					e07c977f18 | ||
| 
						 | 
					2ae21cc5c3 | ||
| 
						 | 
					05fed23d06 | ||
| 
						 | 
					2f43722570 | ||
| 
						 | 
					7ea315539c | ||
| 
						 | 
					10d527906a | ||
| 
						 | 
					2f1d118537 | ||
| 
						 | 
					696922defe | ||
| 
						 | 
					cea50c9247 | ||
| 
						 | 
					636f956bf0 | ||
| 
						 | 
					64b1d91701 | ||
| 
						 | 
					ff83f7c6ed | ||
| 
						 | 
					87c0cd2667 | ||
| 
						 | 
					366c8a99ef | ||
| 
						 | 
					30f2aff526 | ||
| 
						 | 
					962cffffc7 | ||
| 
						 | 
					f196484187 | ||
| 
						 | 
					c40fe2f71a | ||
| 
						 | 
					74c149e891 | ||
| 
						 | 
					57c82eb66f | ||
| 
						 | 
					5460606cff | ||
| 
						 | 
					1a509417a4 | ||
| 
						 | 
					898cd20ceb | ||
| 
						 | 
					792b78b317 | ||
| 
						 | 
					4efe647169 | ||
| 
						 | 
					4fbba55f14 | ||
| 
						 | 
					2efc5a9e83 | ||
| 
						 | 
					57144d5102 | ||
| 
						 | 
					555bbffec3 | ||
| 
						 | 
					e22510658b | ||
| 
						 | 
					cb08e49303 | ||
| 
						 | 
					dee03d2b80 | ||
| 
						 | 
					b5ec3e47fa | ||
| 
						 | 
					ffb11fb950 | ||
| 
						 | 
					fbee1f0ed7 | ||
| 
						 | 
					131ada1116 | ||
| 
						 | 
					b0609b29aa | ||
| 
						 | 
					bbb59b8c5e | ||
| 
						 | 
					72deed0c37 | ||
| 
						 | 
					b9f8c60fa7 | ||
| 
						 | 
					87b36e1ff1 | ||
| 
						 | 
					d8c5d338cb | ||
| 
						 | 
					417438fea0 | ||
| 
						 | 
					5488ffb6d4 | ||
| 
						 | 
					e8725ce940 | ||
| 
						 | 
					0e734920e8 | ||
| 
						 | 
					ad598a2060 | ||
| 
						 | 
					bb47f95262 | ||
| 
						 | 
					a7a2115b9c | ||
| 
						 | 
					18429f2a69 | ||
| 
						 | 
					7e6430787c | ||
| 
						 | 
					dc3ba8c223 | ||
| 
						 | 
					2fd6520a7e | ||
| 
						 | 
					7a61b36104 | ||
| 
						 | 
					2f4783a770 | ||
| 
						 | 
					6056391a78 | ||
| 
						 | 
					213b3575ce | ||
| 
						 | 
					3821e18d08 | ||
| 
						 | 
					224c6e3f7c | ||
| 
						 | 
					18ab6f429c | ||
| 
						 | 
					07f8542ce7 | ||
| 
						 | 
					cf293c224d | ||
| 
						 | 
					e234ad0011 | ||
| 
						 | 
					229b778b0b | ||
| 
						 | 
					66f484defe | ||
| 
						 | 
					ed523e248a | ||
| 
						 | 
					3c49f27bf4 | ||
| 
						 | 
					226d146b25 | ||
| 
						 | 
					1892289329 | ||
| 
						 | 
					5529fc0355 | ||
| 
						 | 
					73ef559240 | ||
| 
						 | 
					b59a63c8cd | ||
| 
						 | 
					c36927137f | ||
| 
						 | 
					649aaad100 | ||
| 
						 | 
					ea4c262482 | ||
| 
						 | 
					89de6c9df6 | ||
| 
						 | 
					4578bc3b0c | ||
| 
						 | 
					8df1e4866a | ||
| 
						 | 
					9f92220a9c | ||
| 
						 | 
					09a9e7bcb7 | ||
| 
						 | 
					a434f8877a | ||
| 
						 | 
					ef891dc0a7 | ||
| 
						 | 
					3ebe29c983 | ||
| 
						 | 
					1028e43464 | ||
| 
						 | 
					4979f66f28 | ||
| 
						 | 
					a5e9fe97c8 | ||
| 
						 | 
					2293cfaf84 | ||
| 
						 | 
					d252dde933 | ||
| 
						 | 
					37a49a5992 | ||
| 
						 | 
					2783801610 | ||
| 
						 | 
					82f19c9a91 | ||
| 
						 | 
					71d9531e45 | ||
| 
						 | 
					3bbeaefa57 | ||
| 
						 | 
					4611be805a | ||
| 
						 | 
					587493fdfc | ||
| 
						 | 
					50079144e3 | ||
| 
						 | 
					2ca80e76a0 | ||
| 
						 | 
					68e6502484 | ||
| 
						 | 
					1e91dfa5df | ||
| 
						 | 
					e4e5f7c65b | ||
| 
						 | 
					8ef66261f1 | ||
| 
						 | 
					90812b536c | ||
| 
						 | 
					2b880d3ef8 | ||
| 
						 | 
					6ab729aeb3 | ||
| 
						 | 
					c9f97f49c5 | ||
| 
						 | 
					8b352fcb94 | ||
| 
						 | 
					5a06af4d57 | ||
| 
						 | 
					2ede900bfd | ||
| 
						 | 
					fb0ffc7784 | ||
| 
						 | 
					e69171dc06 | ||
| 
						 | 
					8452f6b494 | ||
| 
						 | 
					f9bc6f8afc | ||
| 
						 | 
					f9f44d7d9b | ||
| 
						 | 
					86bb1472cc | ||
| 
						 | 
					ef09c506c8 | ||
| 
						 | 
					af7b3b420e | ||
| 
						 | 
					3b80a35a66 | ||
| 
						 | 
					f59b27258c | ||
| 
						 | 
					d38fff38f9 | ||
| 
						 | 
					91c5b12f25 | ||
| 
						 | 
					894bdd5cda | ||
| 
						 | 
					d8c58ca6c8 | ||
| 
						 | 
					43f7956422 | ||
| 
						 | 
					96fcc02900 | ||
| 
						 | 
					2e8b6e7f20 | ||
| 
						 | 
					3ed93398e9 | ||
| 
						 | 
					d84e0caea8 | ||
| 
						 | 
					5c1da58b90 | ||
| 
						 | 
					018c617199 | ||
| 
						 | 
					a49f954f6a | ||
| 
						 | 
					03a8791440 | ||
| 
						 | 
					78ad17381e | ||
| 
						 | 
					5b03803e2f | ||
| 
						 | 
					ee1e461a57 | ||
| 
						 | 
					a543725311 | ||
| 
						 | 
					8c701a0861 | ||
| 
						 | 
					5fbe566524 | ||
| 
						 | 
					e14cf31bc9 | ||
| 
						 | 
					0042c03c7e | ||
| 
						 | 
					41023ecb9c | ||
| 
						 | 
					fb8d0a544d | ||
| 
						 | 
					acaf8c9cc9 | ||
| 
						 | 
					0d3fc8d103 | ||
| 
						 | 
					9bbfbacacc | ||
| 
						 | 
					8e301c629f | ||
| 
						 | 
					9576d8a081 | ||
| 
						 | 
					7db96672bf | ||
| 
						 | 
					0d8f099ca2 | ||
| 
						 | 
					0a4d7e5068 | ||
| 
						 | 
					a32f75b800 | ||
| 
						 | 
					78f37c51ef | ||
| 
						 | 
					d6e5eb75ee | ||
| 
						 | 
					6f433a7e7b | ||
| 
						 | 
					ce2ecb5582 | ||
| 
						 | 
					45c15e8561 | ||
| 
						 | 
					5e3f4186da | ||
| 
						 | 
					d03694df19 | ||
| 
						 | 
					d52e8fa7d2 | ||
| 
						 | 
					77c6cd0bff | ||
| 
						 | 
					463ebe8b4b | ||
| 
						 | 
					a563eab49a | ||
| 
						 | 
					bf9d4b103d | ||
| 
						 | 
					7dc2449f3a | ||
| 
						 | 
					27cc20db11 | ||
| 
						 | 
					4e04f5f731 | ||
| 
						 | 
					5ec3844077 | ||
| 
						 | 
					f641c7cd0d | ||
| 
						 | 
					49aa54cafc | ||
| 
						 | 
					e3b81e66a1 | ||
| 
						 | 
					7bb6b928b5 | ||
| 
						 | 
					ad4dc7c4a9 | ||
| 
						 | 
					feb9764721 | ||
| 
						 | 
					8c74501001 | ||
| 
						 | 
					5861d3fd64 | ||
| 
						 | 
					08acdc6a86 | ||
| 
						 | 
					3b50570c9b | ||
| 
						 | 
					00d7e962a7 | ||
| 
						 | 
					192f7413c2 | ||
| 
						 | 
					5bdb8074aa | ||
| 
						 | 
					6abe5e1b23 | ||
| 
						 | 
					4612b4ccca | ||
| 
						 | 
					3245bf61a1 | ||
| 
						 | 
					9ee13167bb | ||
| 
						 | 
					ca9633ca9b | ||
| 
						 | 
					e04884545c | ||
| 
						 | 
					aa2239a050 | ||
| 
						 | 
					40a1b60cbd | ||
| 
						 | 
					cccb11916f | ||
| 
						 | 
					49641825eb | ||
| 
						 | 
					c14c078405 | ||
| 
						 | 
					f2af073588 | ||
| 
						 | 
					b9a5eddb6d | ||
| 
						 | 
					bffc815375 | ||
| 
						 | 
					5c3f322364 | ||
| 
						 | 
					3a6fae817c | ||
| 
						 | 
					d8f74ecb94 | ||
| 
						 | 
					f7f2b1b033 | ||
| 
						 | 
					601ab7ff82 | 
							
								
								
									
										0
									
								
								.cleancount
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								.cleancount
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										16
									
								
								.cvsignore
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								.cvsignore
									
									
									
									
									
								
							@@ -1,16 +0,0 @@
 | 
			
		||||
asterisk
 | 
			
		||||
defaults.h
 | 
			
		||||
ast_expr2.output
 | 
			
		||||
.version
 | 
			
		||||
.depend
 | 
			
		||||
.applied
 | 
			
		||||
mpg123-0.59r
 | 
			
		||||
mpg123-0.59r.tar.gz
 | 
			
		||||
update.out
 | 
			
		||||
.lastclean
 | 
			
		||||
.cleancount
 | 
			
		||||
.tags-depend
 | 
			
		||||
.tags-sources
 | 
			
		||||
tags
 | 
			
		||||
TAGS
 | 
			
		||||
testexpr2
 | 
			
		||||
							
								
								
									
										1
									
								
								.lastclean
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.lastclean
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
8
 | 
			
		||||
							
								
								
									
										2
									
								
								CREDITS
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										2
									
								
								CREDITS
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -85,7 +85,7 @@ Leif Madsen, Jared Smith and Jim van Meggelen - the Asterisk book
 | 
			
		||||
	available under a Creative Commons License at http://www.asteriskdocs.org
 | 
			
		||||
 | 
			
		||||
=== HOLD MUSIC ===
 | 
			
		||||
Music provided by www.freeplaymusic.com
 | 
			
		||||
Music provided by www.opsound.org
 | 
			
		||||
 | 
			
		||||
=== OTHER SOURCE CODE IN ASTERISK ===
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										831
									
								
								ChangeLog
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										831
									
								
								ChangeLog
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -1,3 +1,831 @@
 | 
			
		||||
2006-01-30 Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* Asterisk 1.2.4 Released
 | 
			
		||||
 | 
			
		||||
2006-01-30 17:08 +0000 [r8905]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_zap.c: disable buggy PRI user-user code until it
 | 
			
		||||
	  can be fixed
 | 
			
		||||
 | 
			
		||||
2006-01-28 13:52 +0000 [r8808]  Olle Johansson <oej@edvina.net>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: Issue 6182 - Don't remove scheduled event
 | 
			
		||||
	  until it's really done. (reported by malverian)
 | 
			
		||||
 | 
			
		||||
2006-01-27 08:02 +0000 [r8785]  Olle Johansson <oej@edvina.net>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: Issue 6362 - Register without Contact: and
 | 
			
		||||
	  Expires: fails (reporter: op)
 | 
			
		||||
 | 
			
		||||
2006-01-27 00:52 +0000 [r8758]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* ast_expr2.h, ast_expr2f.c, ast_expr2.c: Bug 6072 - Revisions to
 | 
			
		||||
	  the source bison and flex files don't auto-regenerate these files
 | 
			
		||||
 | 
			
		||||
2006-01-26 19:42 +0000 [r8729]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_zap.c: fix problem with dtmf on e&m (issue #6364)
 | 
			
		||||
 | 
			
		||||
2006-01-26 14:39 +0000 [r8710]  Olle Johansson <oej@edvina.net>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: Issue 5898: Registrations does not get
 | 
			
		||||
	  deleted if there's an active SIP dialog
 | 
			
		||||
 | 
			
		||||
2006-01-25 19:14 +0000 [r8666-8677]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: don't call ast_update_realtime with
 | 
			
		||||
	  uninitialized variables if we get a registration with an expirey
 | 
			
		||||
	  of 0 seconds (issue #6173)
 | 
			
		||||
 | 
			
		||||
	* channels/chan_features.c: fix memory leak (inspired by issue
 | 
			
		||||
	  #6351)
 | 
			
		||||
 | 
			
		||||
2006-01-25 Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* Asterisk 1.2.3 Released
 | 
			
		||||
 | 
			
		||||
2006-01-25 09:46 +0000 [r8632]  Olle Johansson <oej@edvina.net>
 | 
			
		||||
 | 
			
		||||
	* channel.c: Issue #6439 - the "timebomb" bug. Patch by Markster
 | 
			
		||||
	  over GPRS
 | 
			
		||||
 | 
			
		||||
2006-01-25 05:38 +0000 [r8619]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* utils/astman.c: don't leak almost 200 bytes for each new channel
 | 
			
		||||
	  (issue #6330)
 | 
			
		||||
 | 
			
		||||
2006-01-25 01:50 +0000 [r8608]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_dial.c: ensure hangup cause code is handled properly
 | 
			
		||||
	  when channel does not return a frame (issue #6346)
 | 
			
		||||
 | 
			
		||||
2006-01-24 22:55 +0000 [r8600]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* asterisk.c: completely arbitrary whitespace change for testing
 | 
			
		||||
	  something with svnmerge ...
 | 
			
		||||
 | 
			
		||||
2006-01-24 22:32 +0000 [r8588]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channel.c: ensure that channel cannot become zombie after we
 | 
			
		||||
	  check but before we try to start indications
 | 
			
		||||
 | 
			
		||||
2006-01-24 20:37 +0000 [r8573]  Matt Frederickson <creslin@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_zap.c: Backport fix for #6229, hangup on polarity
 | 
			
		||||
	  reversal
 | 
			
		||||
 | 
			
		||||
2006-01-24 19:21 +0000 [r8537-8562]  Olle Johansson <oej@edvina.net>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: Issue 6114: Don't hangup on BYE/ALSO with no
 | 
			
		||||
	  channel.
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: Issue #6308 - never send response to ACK.
 | 
			
		||||
	  (Reported by whiskerp)
 | 
			
		||||
 | 
			
		||||
2006-01-22 19:03 +0000 [r8437-8445]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_queue.c: fix memory leak from not freeing the queue
 | 
			
		||||
	  member list when freeing an old queue
 | 
			
		||||
 | 
			
		||||
	* channel.c: fix MixMonitor crash (issue #6321, probably others)
 | 
			
		||||
 | 
			
		||||
2006-01-22 15:13 +0000 [r8433]  BJ Weschke <bweschke@btwtech.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: Bug fix: Correct some scenarios where
 | 
			
		||||
	  CALL_LIMIT could not be getting adjusted properly allowing
 | 
			
		||||
	  chan_sip to send calls when it really shouldn't. Bug #6111
 | 
			
		||||
 | 
			
		||||
2006-01-22 08:52 +0000 [r8429]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: Bug 6281 - Cannot set more than a single
 | 
			
		||||
	  header with SIPAddHeader
 | 
			
		||||
 | 
			
		||||
2006-01-22 02:05 +0000 [r8412-8418]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* pbx.c: add a modified fix to prevent writing outside of the
 | 
			
		||||
	  provided workspace when calculating a substring (issue #6271)
 | 
			
		||||
 | 
			
		||||
	* pbx.c: temporarily revert substring fix pending the result of the
 | 
			
		||||
	  discussion in issue #6271
 | 
			
		||||
 | 
			
		||||
	* pbx.c: prevent the possibility of writing outside of the
 | 
			
		||||
	  available workspace (issue #6271)
 | 
			
		||||
 | 
			
		||||
2006-01-21 18:29 +0000 [r8394]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_queue.c: Bug 5936 - AddQueueMember fails on realtime
 | 
			
		||||
	  queue, if queue not yet loaded
 | 
			
		||||
 | 
			
		||||
2006-01-20 18:34 +0000 [r8347]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_queue.c: fix invalid value of prev_q (issue #6302)
 | 
			
		||||
 | 
			
		||||
2006-01-20 01:00 +0000 [r8320]  Matt O'Gorman <mogorman@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_iax2.c: solved problem with delayreject and iax
 | 
			
		||||
	  trunking bug 4291
 | 
			
		||||
 | 
			
		||||
2006-01-19 19:40 +0000 [r8281]  Olle Johansson <oej@edvina.net>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: Enable "musicclass" setting for sip peers as
 | 
			
		||||
	  per the config sample.
 | 
			
		||||
 | 
			
		||||
2006-01-19 19:14 +0000 [r8276]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* ast_expr2.y, ast_expr2.fl: Bug 6072 - Memory leaks in the
 | 
			
		||||
	  expression parser
 | 
			
		||||
 | 
			
		||||
2006-01-19 04:56 +0000 [r8232-8242]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: fix Message-Account header to use the ip
 | 
			
		||||
	  address if the fromdomain isn't set (issue #6278)
 | 
			
		||||
 | 
			
		||||
	* apps/app_milliwatt.c: fix a seg fault due to assuming that space
 | 
			
		||||
	  gets allocatted on the stack in the same order that we declare
 | 
			
		||||
	  the variables (issue #6290)
 | 
			
		||||
 | 
			
		||||
2006-01-18 21:02 +0000 [r8194]  Matt O'Gorman <mogorman@digium.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_meetme.c: Solves issue with the login proccess in meetme
 | 
			
		||||
	  patch from 6136
 | 
			
		||||
 | 
			
		||||
2006-01-18 02:49 +0000 [r8173]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* ChangeLog (removed): remove ChangeLog from the 1.2 branch. It
 | 
			
		||||
	  will only be present in the tags.
 | 
			
		||||
 | 
			
		||||
2006-01-18 Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* Asterisk 1.2.2 Released
 | 
			
		||||
 | 
			
		||||
2006-01-18 00:47 +0000 [r8140-8162]  Matt O'Gorman <mogorman@digium.com>
 | 
			
		||||
 | 
			
		||||
	* loader.c: Changed order of autoload so that pbx_ comes before
 | 
			
		||||
	  channels, and in doing so cause bug 6002 to not be an issue
 | 
			
		||||
 | 
			
		||||
	* apps/app_festival.c: Stop any generators running on a channel
 | 
			
		||||
	  when festival is called as described in 5996
 | 
			
		||||
 | 
			
		||||
2006-01-17 18:29 +0000 [r8134]  Matt Frederickson <creslin@digium.com>
 | 
			
		||||
 | 
			
		||||
	* res/res_features.c: Backport of fix for #6094
 | 
			
		||||
 | 
			
		||||
2006-01-17 16:55 +0000 [r8124]  Matt O'Gorman <mogorman@digium.com>
 | 
			
		||||
 | 
			
		||||
	* logger.c: Fixed code ordering of logger_init and queue_log_init
 | 
			
		||||
	  bug 6263
 | 
			
		||||
 | 
			
		||||
2006-01-17 13:11 +0000 [r8112-8122]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* asterisk.c: update CLI copyright notice
 | 
			
		||||
 | 
			
		||||
	* asterisk.c: do rlimit check _after_ reading config file, in case
 | 
			
		||||
	  'dumpcore' is specified there
 | 
			
		||||
 | 
			
		||||
2006-01-14 19:06 +0000 [r8074]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* funcs/func_strings.c: Bug 6238 - Fix segfault when delimiter not
 | 
			
		||||
	  specified
 | 
			
		||||
 | 
			
		||||
2006-01-13 06:07 +0000 [r8047]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_agent.c: fix spelling errors (issue #6227)
 | 
			
		||||
 | 
			
		||||
2006-01-12 06:14 +0000 [r7999]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c, configs/voicemail.conf.sample: Bug 6211 -
 | 
			
		||||
	  Add option deletevoicemail as equivalent to option delete for
 | 
			
		||||
	  Realtime
 | 
			
		||||
 | 
			
		||||
2006-01-11 19:08 +0000 [r7965-7986]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_agent.c: move variable to correct scope (issue
 | 
			
		||||
	  #6197)
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c: fix temp greetings with ODBC storage (issue
 | 
			
		||||
	  #6078)
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: fix mem leak on module unload (issue #6190)
 | 
			
		||||
 | 
			
		||||
	* app.c: don't override an error condition that occurred when
 | 
			
		||||
	  acting on the primary channel when stopping the autoservice on
 | 
			
		||||
	  the peer channel. (from issue #6087)
 | 
			
		||||
 | 
			
		||||
	* translate.c: lock list of translators *before* recalculating the
 | 
			
		||||
	  translation matrix
 | 
			
		||||
 | 
			
		||||
2006-01-11 04:38 +0000 [r7963]  Matt O'Gorman <mogorman@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channel.c: Minor typo refrenced in 6191
 | 
			
		||||
 | 
			
		||||
2006-01-11 04:19 +0000 [r7957-7960]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* pbx.c: fix locking error - lock instead of unlock
 | 
			
		||||
 | 
			
		||||
	* apps/app_dial.c: fix a little typo
 | 
			
		||||
 | 
			
		||||
2006-01-11 01:30 +0000 [r7955]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c: Bug 6192 - behave correctly when mailbox is
 | 
			
		||||
	  specified as argument
 | 
			
		||||
 | 
			
		||||
2006-01-10 08:48 +0000 [r7939]  Olle Johansson <oej@edvina.net>
 | 
			
		||||
 | 
			
		||||
	* doc/README.cdr: - Adding reference to README.tds - Reformatting
 | 
			
		||||
	  table
 | 
			
		||||
 | 
			
		||||
2006-01-09 22:48 +0000 [r7917]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_iax2.c: re-initialize _all_ sequence numbers when
 | 
			
		||||
	  transfer completes
 | 
			
		||||
 | 
			
		||||
2006-01-09 22:07 +0000 [r7915]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* file.c: add missing unlock (issue #6112)
 | 
			
		||||
 | 
			
		||||
2006-01-09 20:08 +0000 [r7904-7908]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* pbx/pbx_spool.c: Bug 6157 - Memory leak
 | 
			
		||||
 | 
			
		||||
	* doc/README.variables: Update variable documentation to match the
 | 
			
		||||
	  code
 | 
			
		||||
 | 
			
		||||
2006-01-09 18:11 +0000 [r7898-7900]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* asterisk.c: commit user/group-related changes from trunk
 | 
			
		||||
 | 
			
		||||
	* db.c: backport fix from revision 7856 of trunk
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c: fix breakage introduced in revision 7871
 | 
			
		||||
 | 
			
		||||
2006-01-09 05:11 +0000 [r7870-7871]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c: fix seg fault when using greek syntax in
 | 
			
		||||
	  VoicemMailMain (issue #6142)
 | 
			
		||||
 | 
			
		||||
	* manager.c: backport fix for unnecessary unlock (issue #6171)
 | 
			
		||||
 | 
			
		||||
2006-01-07 07:27 +0000 [r7848]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* pbx/pbx_spool.c: Bug 6156 - catch all threading errors, not just
 | 
			
		||||
	  simple failure
 | 
			
		||||
 | 
			
		||||
2006-01-06 00:34 +0000 [r7831]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* pbx/pbx_config.c: Dumb error messages - "Context 'context'
 | 
			
		||||
	  already included in 'in' context"
 | 
			
		||||
 | 
			
		||||
2006-01-06 00:21 +0000 [r7829]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_agent.c: update agent persistence when an agent
 | 
			
		||||
	  gets logged off by autologoff
 | 
			
		||||
 | 
			
		||||
2006-01-05 23:53 +0000 [r7827]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* include/asterisk/strings.h: Bug 6076 - Fix documentation of
 | 
			
		||||
	  ast_trim_blank return value
 | 
			
		||||
 | 
			
		||||
2006-01-05 23:49 +0000 [r7825]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channel.c: eliminate rounding errors that caused call time limits
 | 
			
		||||
	  to be inaccurate (issue #5913) round 'time left' reported during
 | 
			
		||||
	  call limit warnings up to sound more accurate
 | 
			
		||||
 | 
			
		||||
2006-01-05 23:07 +0000 [r7823]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* res/res_features.c: Bug 6081 - fix for memory leak, formatting
 | 
			
		||||
	  fixes
 | 
			
		||||
 | 
			
		||||
2006-01-05 20:52 +0000 [r7819]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* formats/format_pcm.c, formats/format_pcm_alaw.c: ensure that
 | 
			
		||||
	  variable is initialized
 | 
			
		||||
 | 
			
		||||
2006-01-05 09:13 +0000 [r7812]  Olle Johansson <oej@edvina.net>
 | 
			
		||||
 | 
			
		||||
	* res/res_features.c: Fix copyright of changed file
 | 
			
		||||
 | 
			
		||||
2006-01-05 00:58 +0000 [r7799-7809]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_agent.c: send device state updates for auto-logoff
 | 
			
		||||
	  of agents as well
 | 
			
		||||
 | 
			
		||||
	* formats/format_pcm.c, formats/format_pcm_alaw.c: doh... fseek()
 | 
			
		||||
	  has no useful return value
 | 
			
		||||
 | 
			
		||||
	* formats/format_pcm.c, formats/format_pcm_alaw.c: use proper
 | 
			
		||||
	  fwrite() parameters and return value
 | 
			
		||||
 | 
			
		||||
	* formats/format_pcm.c, formats/format_pcm_alaw.c: return properly
 | 
			
		||||
	  after extending file
 | 
			
		||||
 | 
			
		||||
	* formats/format_pcm.c, formats/format_pcm_alaw.c: ensure that
 | 
			
		||||
	  ulaw/alaw sound files are filled with silence when extended (not
 | 
			
		||||
	  zeroes)
 | 
			
		||||
 | 
			
		||||
	* channel.c: make monitoring more tolerant of peers that deliver
 | 
			
		||||
	  frames in bursts
 | 
			
		||||
 | 
			
		||||
2006-01-04 21:46 +0000 [r7792-7795]  Olle Johansson <oej@edvina.net>
 | 
			
		||||
 | 
			
		||||
	* res/res_features.c: Issue #5980: Removing extra CR+LF in manager
 | 
			
		||||
	  events - needs port to trunk
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: Fixing typo in XML for video updates.
 | 
			
		||||
 | 
			
		||||
2006-01-04 07:06 +0000 [r7773]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* funcs/func_moh.c: use a more correct way of determining the size
 | 
			
		||||
	  of the destination buffer
 | 
			
		||||
 | 
			
		||||
2006-01-04 05:27 +0000 [r7771]  BJ Weschke <bweschke@btwtech.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_privacy.c: Fix the 'if' clause to be true under the
 | 
			
		||||
	  right conditions. Bug #6126
 | 
			
		||||
 | 
			
		||||
2006-01-03 20:22 +0000 [r7746]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* ast_expr.y (removed): remove unused 'old' expression parser
 | 
			
		||||
 | 
			
		||||
2006-01-03 18:15 +0000 [r7743]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_stack.c: Bug 6121 - typo in application description
 | 
			
		||||
 | 
			
		||||
2006-01-03 17:24 +0000 [r7736-7740]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* include/asterisk/chanspy.h, apps/app_chanspy.c,
 | 
			
		||||
	  apps/app_mixmonitor.c, channel.c: revert incorrect fix for bug
 | 
			
		||||
	  #6048 from revision 7709 put in correct (simpler) fix add doxygen
 | 
			
		||||
	  docs for channel spy 'state' values
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: backport rport scanning fix from trunk (bug
 | 
			
		||||
	  #6071)
 | 
			
		||||
 | 
			
		||||
	* ast_expr2f.c, ast_expr2.fl: don't leak memory for (most)
 | 
			
		||||
	  expression evaluations
 | 
			
		||||
 | 
			
		||||
2006-01-02 07:31 +0000 [r7709]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_mixmonitor.c: Bug 6084 - MixMonitor after a 'cli stop
 | 
			
		||||
	  monitor' deadlocks
 | 
			
		||||
 | 
			
		||||
2006-01-02 02:04 +0000 [r7706]  BJ Weschke <bweschke@btwtech.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c, channels/chan_iax2.c: Fix compiler warnings.
 | 
			
		||||
 | 
			
		||||
2005-12-30 14:54 +0000 [r7677]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* channel.c: Bug 6091 - Fix race condition around uniqueid
 | 
			
		||||
 | 
			
		||||
2005-12-28 17:35 +0000 [r7663-7665]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: fix memory leak in build_rpid (issue #6070)
 | 
			
		||||
 | 
			
		||||
	* apps/app_chanspy.c: backport fix for permissions of created
 | 
			
		||||
	  recordings (issue #6067)
 | 
			
		||||
 | 
			
		||||
2005-12-27 00:07 +0000 [r7641]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_zap.c: backport fix to ensure that DSP is never
 | 
			
		||||
	  enabled on pseudo channels
 | 
			
		||||
 | 
			
		||||
2005-12-26 20:32 +0000 [r7637]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* cdr/cdr_tds.c: Remove copy of code in libc, preferring code in
 | 
			
		||||
	  utils.c (public domain code)
 | 
			
		||||
 | 
			
		||||
2005-12-26 18:19 +0000 [r7634]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c, channels/chan_agent.c, apps/app_sms.c,
 | 
			
		||||
	  asterisk.c, config.c, pbx/pbx_dundi.c, apps/app_externalivr.c,
 | 
			
		||||
	  apps/app_queue.c, channels/chan_iax2.c, cli.c,
 | 
			
		||||
	  apps/app_chanspy.c, res/res_monitor.c: cast time_t to an int in
 | 
			
		||||
	  printf/scanf (issue #5635)
 | 
			
		||||
 | 
			
		||||
2005-12-23 06:38 +0000 [r7608]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_hasnewvoicemail.c: Bug 6051 - VMCOUNT should work as
 | 
			
		||||
	  documented and count all, not quit after finding 1
 | 
			
		||||
 | 
			
		||||
2005-12-23 03:01 +0000 [r7606]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* asterisk.c: add license reference to copyright notice displayed
 | 
			
		||||
	  when CLI session begins add 'show warranty' and 'show license'
 | 
			
		||||
	  CLI commands (still need a complete list of non-GPL components
 | 
			
		||||
	  included in Asterisk)
 | 
			
		||||
 | 
			
		||||
2005-12-23 00:00 +0000 [r7605]  BJ Weschke <bweschke@btwtech.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_waitforsilence.c: Another app documentation tweak.
 | 
			
		||||
 | 
			
		||||
2005-12-22 22:04 +0000 [r7601]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c: Bug 6050 SQL requires the use of single
 | 
			
		||||
	  ticks to delimit values, not quotes
 | 
			
		||||
 | 
			
		||||
2005-12-22 20:36 +0000 [r7595-7599]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c, configs/sip.conf.sample: revert changes to
 | 
			
		||||
	  videosupport to allow per-peer setting, since it isn't quite
 | 
			
		||||
	  complete and there is not an obvious fix at this point
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: remove stray unlock (issue #5955)
 | 
			
		||||
 | 
			
		||||
2005-12-21 22:23 +0000 [r7586]  Josh Roberson <josh@asteriasgi.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: Actually put in the per-peer settings for
 | 
			
		||||
	  sip video, as they didn't make it in at astricon somehow, and
 | 
			
		||||
	  I've been too busy up until now to redo it.
 | 
			
		||||
 | 
			
		||||
2005-12-21 20:01 +0000 [r7582]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_alsa.c: Allow a chan_alsa that failed to open sound
 | 
			
		||||
	  devices to be unloaded.
 | 
			
		||||
 | 
			
		||||
2005-12-21 19:53 +0000 [r7580]  BJ Weschke <bweschke@btwtech.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_agent.c: Bug #6040 - Documentation correction
 | 
			
		||||
 | 
			
		||||
2005-12-21 19:23 +0000 [r7577]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* pbx/pbx_ael.c: Bug 5777 - Remove parentheses on Goto in AEL, so
 | 
			
		||||
	  that it parses correctly
 | 
			
		||||
 | 
			
		||||
2005-12-20 20:21 +0000 [r7550-7557]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* res/res_agi.c: check array bounds when parsing arguments to AGI
 | 
			
		||||
	  (issue #5868)
 | 
			
		||||
 | 
			
		||||
	* channels/chan_iax2.c: backport fix for reloading peer context
 | 
			
		||||
	  (issue #6007)
 | 
			
		||||
 | 
			
		||||
	* apps/app_directed_pickup.c: backport fix for segfault on directed
 | 
			
		||||
	  pickup when no CDR is available (issue #5998)
 | 
			
		||||
 | 
			
		||||
2005-12-20 12:58 +0000 [r7546]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_meetme.c: backport fix for larger-than-20ms-frames from
 | 
			
		||||
	  trunk (bug #5697)
 | 
			
		||||
 | 
			
		||||
2005-12-19 23:47 +0000 [r7529]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: I messed up and accidently committed this to
 | 
			
		||||
	  the trunk first ... - add note on required values of sip_methods
 | 
			
		||||
	  struct - remove duplicate function prototype - remove duplicate
 | 
			
		||||
	  ast_mutex_lock (issue #6025)
 | 
			
		||||
 | 
			
		||||
2005-12-19 19:06 +0000 [r7521-7523]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* file.c: Bug 5988 - record append option not working
 | 
			
		||||
 | 
			
		||||
	* cdr.c: Bug 6026 - segfault for the sequence NoCDR(),
 | 
			
		||||
	  SetAMAFlags()
 | 
			
		||||
 | 
			
		||||
2005-12-17 18:55 +0000 [r7517-7519]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* doc/README.ael: Document that curley braces must be on the same
 | 
			
		||||
	  line as the keyword.
 | 
			
		||||
 | 
			
		||||
	* apps/app_chanspy.c: Bug 6009 - off by one error
 | 
			
		||||
 | 
			
		||||
2005-12-17 03:59 +0000 [r7510-7515]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: Max-Forwards headers must only be present on
 | 
			
		||||
	  requests, not responses
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: forcibly expire previous subscriptions from
 | 
			
		||||
	  a peer when they resubscribe (keeps them from building up and
 | 
			
		||||
	  waiting for expiration, and stops us sending unwanted NOTIFY
 | 
			
		||||
	  messages to devices)
 | 
			
		||||
 | 
			
		||||
	* build_tools/make_svn_branch_name: fix some buglet when building
 | 
			
		||||
	  team branch version strings
 | 
			
		||||
 | 
			
		||||
2005-12-17 01:02 +0000 [r7508]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* include/asterisk/linkedlists.h: We want to check the previous
 | 
			
		||||
	  value, not the current value (which was just changed).
 | 
			
		||||
 | 
			
		||||
2005-12-16 00:49 +0000 [r7497]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_cut.c: First field is truncated
 | 
			
		||||
 | 
			
		||||
2005-12-15 10:52 +0000 [r7490]  Christian Richter <christian.richter@beronet.com>
 | 
			
		||||
 | 
			
		||||
	* doc/README.misdn, channels/misdn/mISDNuser.patch (added),
 | 
			
		||||
	  channels/misdn/isdn_lib_intern.h, channels/misdn/mISDN.patch
 | 
			
		||||
	  (added), channels/misdn/isdn_lib.h, channels/chan_misdn.c,
 | 
			
		||||
	  channels/misdn/Makefile, channels/misdn/chan_misdn_config.h,
 | 
			
		||||
	  channels/misdn/ie.c, channels/chan_misdn_config.c,
 | 
			
		||||
	  channels/misdn/isdn_msg_parser.c, channels/Makefile,
 | 
			
		||||
	  channels/misdn/isdn_lib.c: * Added mISDN/mISDNuser Echo cancel
 | 
			
		||||
	  Patch * Fixed Makefiles so that chan_misdn can be compiled again
 | 
			
		||||
	  * added some hints, that mISDN cannot be compiled against gcc-4,
 | 
			
		||||
	  SMP, Spinlock Debug * fixed some Minor issues in chan_misdn,
 | 
			
		||||
	  regarding Type Of Number and Presentation
 | 
			
		||||
 | 
			
		||||
2005-12-15 02:51 +0000 [r7482]  BJ Weschke <bweschke@btwtech.com>
 | 
			
		||||
 | 
			
		||||
	* channel.c: Bug #6003 - Don't free the channel structure until
 | 
			
		||||
	  after having sent the manager event.
 | 
			
		||||
 | 
			
		||||
2005-12-13 18:54 +0000 [r7435-7470]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* doc/README.variables: clarify substring documentation
 | 
			
		||||
 | 
			
		||||
	* utils.c: correct broken math in tvfix() for timestamp values over
 | 
			
		||||
	  one million
 | 
			
		||||
 | 
			
		||||
	* apps/app_dial.c: restore ability of caller to hangup calls that
 | 
			
		||||
	  are still ringing (issue #5839)
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c, pbx.c: ensure that hangups while incoming
 | 
			
		||||
	  calls are in early state are handled properly (issue #5919)
 | 
			
		||||
 | 
			
		||||
	* channels/chan_agent.c: only report AGENT_IDLE for callback mode
 | 
			
		||||
	  agents when they are actually idle (issue #5902)
 | 
			
		||||
 | 
			
		||||
	* app.c: use the stream's current point when pausing/unpausing,
 | 
			
		||||
	  instead of elapsed time (which doesn't work when the stream has
 | 
			
		||||
	  been skipped forward or backward) (issue #5897)
 | 
			
		||||
 | 
			
		||||
	* apps/app_externalivr.c: set all the child file descriptors to
 | 
			
		||||
	  non-blocking so that we don't hang if the child fails to send a
 | 
			
		||||
	  newline-terminated command or error message
 | 
			
		||||
 | 
			
		||||
2005-12-12 17:19 +0000 [r7433]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* include/asterisk/linkedlists.h: Typo
 | 
			
		||||
 | 
			
		||||
2005-12-11 06:08 +0000 [r7430]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* utils/astman.c: silence a couple of compiler warnings about
 | 
			
		||||
	  pointer signedness
 | 
			
		||||
 | 
			
		||||
2005-12-11 01:26 +0000 [r7427-7429]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* include/asterisk/linkedlists.h: Bug 5965 - major bug in
 | 
			
		||||
	  AST_LIST_REMOVE
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c: Bug 5967
 | 
			
		||||
 | 
			
		||||
2005-12-10 18:10 +0000 [r7425]  BJ Weschke <bweschke@btwtech.com>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_zap.c: Bug #5877 Make sure the digit string from
 | 
			
		||||
	  E&M wink DNIS collection is properly null terminated as it grows.
 | 
			
		||||
 | 
			
		||||
2005-12-08 23:45 +0000 [r7404-7406]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c: Bug 5960
 | 
			
		||||
 | 
			
		||||
	* configs/res_odbc.conf.sample: Documenting two keywords that were
 | 
			
		||||
	  previously missing
 | 
			
		||||
 | 
			
		||||
2005-12-08 01:05 +0000 [r7382-7386]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* pbx.c: initialize the buffer before using it...
 | 
			
		||||
 | 
			
		||||
	* pbx.c: ensure that hints are allowed to use global variable
 | 
			
		||||
	  references
 | 
			
		||||
 | 
			
		||||
2005-12-06 Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* Asterisk 1.2.1 Released
 | 
			
		||||
 | 
			
		||||
2005-12-05 06:47 +0000 [r7335-7340]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* Makefile: remove ASTERISKVERSIONNUM from the version string given
 | 
			
		||||
	  to doxygen
 | 
			
		||||
 | 
			
		||||
	* apps/app_queue.c: don't delete dynamic queue members when
 | 
			
		||||
	  reloading the static members from a realtime database (issue
 | 
			
		||||
	  #5922)
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: fix the order of arguments to an error
 | 
			
		||||
	  message (issue #5927)
 | 
			
		||||
 | 
			
		||||
2005-12-04 18:03 +0000 [r7329]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* build_tools/make_svn_branch_name: use a more efficient way to get
 | 
			
		||||
	  the revision number, that will also report if the working copy
 | 
			
		||||
	  contains uncommitted modifications
 | 
			
		||||
 | 
			
		||||
2005-12-03 19:55 +0000 [r7310]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c: Bug 5925: check for "Unknown", as that's
 | 
			
		||||
	  what app_voicemail puts into the field for Unknown callerid Also,
 | 
			
		||||
	  remove useless res checks (initialized to 0; never set)
 | 
			
		||||
 | 
			
		||||
2005-12-03 01:24 +0000 [r7299]  Olle Johansson <oej@edvina.net>
 | 
			
		||||
 | 
			
		||||
	* configs/sip.conf.sample: Documenting the default registerattempts
 | 
			
		||||
	  setting as 0, continue hammering the server for ever and ever ;-)
 | 
			
		||||
 | 
			
		||||
2005-12-02 21:12 +0000 [r7285]  Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
 | 
			
		||||
 | 
			
		||||
	* contrib/init.d/rc.debian.asterisk,
 | 
			
		||||
	  contrib/init.d/rc.mandrake.asterisk,
 | 
			
		||||
	  contrib/init.d/rc.redhat.asterisk,
 | 
			
		||||
	  contrib/init.d/rc.gentoo.asterisk,
 | 
			
		||||
	  contrib/init.d/rc.mandrake.zaptel,
 | 
			
		||||
	  contrib/init.d/rc.slackware.asterisk: Turn on executable bits for
 | 
			
		||||
	  startup scripts, and fix bash var interpolation for Mandrake
 | 
			
		||||
 | 
			
		||||
2005-12-02 00:52 +0000 [r7275]  Olle Johansson <oej@edvina.net>
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: Bug #5907. Improve SIP INFO DTMF debugging
 | 
			
		||||
	  output. (1.2 & Trunk)
 | 
			
		||||
 | 
			
		||||
2005-12-02 00:51 +0000 [r7266-7274]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_page.c, pbx.c: inherit channel variables into channels
 | 
			
		||||
	  created by Page() application (issue #5888)
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c, configs/voicemail.conf.sample, UPGRADE.txt:
 | 
			
		||||
	  allow previous context-searching behavior to be used if desired
 | 
			
		||||
	  (issue #5899)
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c: properly handle password changes when
 | 
			
		||||
	  mailbox is last line of config file and not followed by a newline
 | 
			
		||||
	  (issue #5870) reformat password changing code to conform to
 | 
			
		||||
	  coding guidelines (issue #5870)
 | 
			
		||||
 | 
			
		||||
	* channels/chan_agent.c: protect agent_bridgedchannel() from
 | 
			
		||||
	  segfaulting when there is no bridged channel (issue #5879)
 | 
			
		||||
 | 
			
		||||
	* channels/chan_local.c: allow variables to exist on both 'halves'
 | 
			
		||||
	  of the Local channel (issue #5810)
 | 
			
		||||
 | 
			
		||||
	* apps/app_festival.c: don't block waiting for the Festival server
 | 
			
		||||
	  forever when it goes away (issue #5882)
 | 
			
		||||
 | 
			
		||||
	* channel.c: ensure channel's scheduling context is freed (issue
 | 
			
		||||
	  #5788)
 | 
			
		||||
 | 
			
		||||
	* Makefile, patches (removed): Makefile 'update' target now
 | 
			
		||||
	  supports updating from Subversion repositories (issue #5875)
 | 
			
		||||
	  remove support for 'patches' subdirectory, it's no longer useful
 | 
			
		||||
 | 
			
		||||
2005-12-01 23:18 +0000 [r7261-7265]  Olle Johansson <oej@edvina.net>
 | 
			
		||||
 | 
			
		||||
	* doc/README.misdn: Changing bug report address to the Asterisk
 | 
			
		||||
	  issue tracker
 | 
			
		||||
 | 
			
		||||
	* doc/README.jitterbuffer, doc/README.realtime: Removing references
 | 
			
		||||
	  to 1.1dev, replacing with 1.2, in documentation files.
 | 
			
		||||
 | 
			
		||||
	* doc/README.misdn: Fixing some spelling errors, as well as
 | 
			
		||||
	  changing "cvs" to "subversion" in misdn documentation.
 | 
			
		||||
 | 
			
		||||
2005-12-01 19:25 +0000 [r7257]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* build_tools/make_svn_branch_name: ensure that 'svn info' output
 | 
			
		||||
	  is in the expected language for the script to parse (issue #5880)
 | 
			
		||||
 | 
			
		||||
2005-12-01 02:33 +0000 [r7228-7251]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_externalivr.c: use ast_app_separate_args to split
 | 
			
		||||
	  arguments (issue #5686)
 | 
			
		||||
 | 
			
		||||
	* apps/app_queue.c: fix queue weight feature - compare member
 | 
			
		||||
	  interfaces instead of pointers to the members, since each queue
 | 
			
		||||
	  has its own list of members. (issue #5863)
 | 
			
		||||
 | 
			
		||||
	* build_tools/make_svn_branch_name: use '=' instead of '==' for
 | 
			
		||||
	  string comparisons. /bin/bash is ok with this, but /bin/sh is
 | 
			
		||||
	  not. (issue #5885)
 | 
			
		||||
 | 
			
		||||
	* redhat/asterisk (removed), Makefile: remove outdated redhat init
 | 
			
		||||
	  script and provide the updated one in 'make rpm' (issue #5786)
 | 
			
		||||
 | 
			
		||||
	* contrib/init.d/rc.debian.asterisk,
 | 
			
		||||
	  contrib/init.d/rc.redhat.asterisk: Comment out LD_ASSUME_KERNEL
 | 
			
		||||
	  by default. Print error messages if the asterisk executable or
 | 
			
		||||
	  the asterisk configuration directory are not found. (issue #5785,
 | 
			
		||||
	  #5708)
 | 
			
		||||
 | 
			
		||||
	* apps/app_dial.c: fix DIALEDTIME when call has not been answered
 | 
			
		||||
	  (issue #5862)
 | 
			
		||||
 | 
			
		||||
	* rtp.c: do not allow an rtp message with zero type (issue #5749)
 | 
			
		||||
 | 
			
		||||
	* pbx.c: fix hint case sensitivity (issue #5856)
 | 
			
		||||
 | 
			
		||||
	* configs/sip.conf.sample: add description of the "fromdomain"
 | 
			
		||||
	  option (issue #5874)
 | 
			
		||||
 | 
			
		||||
2005-11-30 03:52 +0000 [r7227]  Josh Roberson <josh@asteriasgi.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c, UPGRADE.txt, ChangeLog: backport fix from
 | 
			
		||||
	  trunk
 | 
			
		||||
 | 
			
		||||
2005-11-30 03:37 +0000 [r7219-7226]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* doc/cdr.txt, doc/CODING-GUIDELINES, include/asterisk.h,
 | 
			
		||||
	  doc/README.mp3: remove remaining CVS references
 | 
			
		||||
 | 
			
		||||
	* channel.c: port memory leak fix from rev 7223 in trunk
 | 
			
		||||
 | 
			
		||||
	* include/asterisk/lock.h: do the multiple-lock check for cond_wait
 | 
			
		||||
	  properly...
 | 
			
		||||
 | 
			
		||||
2005-11-29 06:12 +0000 [r7216-7218]  Russell Bryant <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_cut.c: print an error message if invalid arguments are
 | 
			
		||||
	  specified
 | 
			
		||||
 | 
			
		||||
	* apps/app_skel.c: fix a couple of typos and a buglet
 | 
			
		||||
 | 
			
		||||
2005-11-29 01:25 +0000 [r7199-7213]  Kevin P. Fleming <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* include/asterisk/lock.h: if the lock protected a pthread_cond is
 | 
			
		||||
	  held recursively, warn before waiting onthe condition
 | 
			
		||||
 | 
			
		||||
	* Makefile, build_tools/make_svn_branch_name (added): port version
 | 
			
		||||
	  string computation from trunk
 | 
			
		||||
 | 
			
		||||
	* / (added): branch renames remove unneeded branches
 | 
			
		||||
 | 
			
		||||
2005-11-29  Josh Roberson <josh@asteriasgi.com>
 | 
			
		||||
	
 | 
			
		||||
	* apps/app_voicemail.c: Only look in 'default' context when no context defined to VoiceMailMain(). (issue #5887)
 | 
			
		||||
 | 
			
		||||
2005-11-25  Russell Bryant  <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_dial.c: Properly duplicate the string for ANI (issue #5850)
 | 
			
		||||
 | 
			
		||||
2005-11-23  Russell Bryant  <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* configs/voicemail.conf.sample: Add note to indicate that #include should not be used for this file. (issue #5828)
 | 
			
		||||
 | 
			
		||||
	* indications.c: Fix spelling of "cadence", allowing the old misspelling for backwards compatability. (issue #5826)
 | 
			
		||||
	* configs/indications.conf.sample: Fix spelling of "cadence", allowing the old misspelling for backwards compatability. (issue #5826)
 | 
			
		||||
	* include/asterisk/indications.h: Fix spelling of "cadence", allowing the old misspelling for backwards compatability. (issue #5826)
 | 
			
		||||
	* res/res_indications.c: Fix spelling of "cadence", allowing the old misspelling for backwards compatability. (issue #5826)
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c: Remove left over "yay!" debugging message. (issue #5829)
 | 
			
		||||
 | 
			
		||||
2005-11-21  Kevin P. Fleming  <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* apps/app_cut.c: remove unnecessary include that causes spurious rebuilding
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c (build_peer): ensure that case changes made to peer names are not ignored during reload operations
 | 
			
		||||
 	(build_peer): when a peer is changed from dynamic to static mode, reset the default port number if no other has been specified
 | 
			
		||||
 | 
			
		||||
	* channels/chan_iax2.c (build_peer and build_user): ensure that case changes made to peer/user names are not ignored during reload operations
 | 
			
		||||
 	(build_peer): when a peer is changed from dynamic to static mode, reset the default port number if no other has been specified
 | 
			
		||||
 | 
			
		||||
2005-11-21  Russell Bryant  <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* Makefile: Revert previous change for Darwin.
 | 
			
		||||
 | 
			
		||||
	* apps/app_osplookup.c: Properly populate the number of results. (issue #5789)
 | 
			
		||||
 | 
			
		||||
	* Makefile: Don't hard-code that poll functionality needs to be provided on Darwin.
 | 
			
		||||
	* apps/Makefile: Fix incorrect portion of the patch to fix 'make install' on Solaris.
 | 
			
		||||
 | 
			
		||||
	* channels/chan_iax2.c (iax2_getpeername): Return non-zero to indicate that a peer was found when using realtime (issue #5815)
 | 
			
		||||
 | 
			
		||||
2005-11-20  Russell Bryant  <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* Makefile apps/Makefile: Fix 'make install' for Solaris. (issue #5775)
 | 
			
		||||
 | 
			
		||||
	* apps/app_record.c: Don't leak a frame if writing it to the file fails. (issue #5787)
 | 
			
		||||
 | 
			
		||||
	* Makefile: Create the monitor spool directory when the other spool directories are created.
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c channels/chan_iax2.c: Change warning messages about the number of scheduled events happening all at once to debug messages. (issue #5794)
 | 
			
		||||
 | 
			
		||||
	* pbx/pbx_spool.c: Fix crash when a value is not specified with a variable on a Set: line in a call file. (issue #5806)
 | 
			
		||||
 | 
			
		||||
	* apps/app_meetme.c: Fix the 'X' option to the MeetMe application. (issue #5773)
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c: Correct the use of a mailbox entered by the calling party instead of indicated as an argument to the Voicemail application. (issue #5774)
 | 
			
		||||
 | 
			
		||||
	* apps/app_controlplayback.c: Fix logic in checking for success when jumping to priority n+101.
 | 
			
		||||
	* apps/app_md5.c: Fix logic in checking for success when jumping to priority n+101.
 | 
			
		||||
 | 
			
		||||
	* apps/app_hasnewvoicemail.c: Fix a typo in the application description.  Also, fix the logic in checking for success when jumping to priority n+101. (issue #5795) 
 | 
			
		||||
 | 
			
		||||
	* UPGRADE.txt: Add a note on a second way that the IAX2 channel naming convention has changed. (issue #5792)
 | 
			
		||||
	* channels/chan_iax2.c: Fix alignment of the output for the "iax2 show peer <peer>" CLI command (issue #5792)
 | 
			
		||||
 | 
			
		||||
	* channels/Makefile: Re-add chan_oss to the default build. (issue #5799)
 | 
			
		||||
 | 
			
		||||
	* res/res_musiconhold.c: Fix incorrect argument for the buffer size to an ast_copy_string call (issue #5803)
 | 
			
		||||
 | 
			
		||||
	* funcs/func_enum.c: Shorten the module description (issue #5791)
 | 
			
		||||
 | 
			
		||||
2005-11-17  Russell Bryant  <russell@digium.com>
 | 
			
		||||
 | 
			
		||||
	* Makefile: Fix the output of Makefile generated variables to doxygen
 | 
			
		||||
 | 
			
		||||
	* channels/chan_sip.c: Add missing carriage return and line feed to the SDP line indicating that we don't support VAD (issue #5780)
 | 
			
		||||
 | 
			
		||||
2005-11-16  Kevin P. Fleming  <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* Asterisk 1.2.0 released.
 | 
			
		||||
	
 | 
			
		||||
2005-11-16  Jeremy McNamara <jj@nufone.net>
 | 
			
		||||
 | 
			
		||||
	* apps/app_voicemail.c (load_config): do not terminate asterisk if no voicemail config file
 | 
			
		||||
@@ -10,7 +838,8 @@
 | 
			
		||||
2005-11-16  Kevin P. Fleming  <kpfleming@digium.com>
 | 
			
		||||
 | 
			
		||||
	* channels/Makefile: don't build chan_modem and sub-modules by default
 | 
			
		||||
 | 
			
		||||
	* configs/modules.conf.sample: explicitly 'noload' chan_modem.so and submodules, in case old versions exist
 | 
			
		||||
	
 | 
			
		||||
	* res/Makefile: issue mpg123 not-installed warning at 'make install' time, not 'make'
 | 
			
		||||
 | 
			
		||||
	* apps/app_forkcdr.c (forkcdr_exec): issue warning (and don't segfault) if ForkCDR is called on a channel that doesn't have a CDR (issue #5763)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										111
									
								
								Makefile
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										111
									
								
								Makefile
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -305,22 +305,26 @@ endif # WITHOUT_ZAPTEL
 | 
			
		||||
LIBEDIT=editline/libedit.a
 | 
			
		||||
 | 
			
		||||
ifneq ($(wildcard .version),)
 | 
			
		||||
  ASTERISKVERSION=$(shell cat .version)
 | 
			
		||||
  ASTERISKVERSIONNUM=$(shell awk -F. '{printf "%02d%02d%02d", $$1, $$2, $$3}' .version)
 | 
			
		||||
  RPMVERSION=$(shell sed 's/[-\/:]/_/g' .version)
 | 
			
		||||
  ASTERISKVERSION:=$(shell cat .version)
 | 
			
		||||
  ASTERISKVERSIONNUM:=$(shell awk -F. '{printf "%02d%02d%02d", $$1, $$2, $$3}' .version)
 | 
			
		||||
  RPMVERSION:=$(shell sed 's/[-\/:]/_/g' .version)
 | 
			
		||||
else
 | 
			
		||||
  RPMVERSION=unknown
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifneq ($(wildcard CVS),)
 | 
			
		||||
# CVS mirrors of SVN have .svnrevision files showing
 | 
			
		||||
# which SVN revision they are based on, and .svnbranch
 | 
			
		||||
# showing the branch they are made from
 | 
			
		||||
ifneq ($(wildcard .svnrevision),)
 | 
			
		||||
  ASTERISKVERSIONNUM=999999
 | 
			
		||||
  ifneq ($(wildcard CVS/Tag),)
 | 
			
		||||
    ASTERISKVERSION=$(shell echo "CVS-`sed 's/^T//g' CVS/Tag`-`date +"%D-%T"`")
 | 
			
		||||
  else
 | 
			
		||||
    ASTERISKVERSION=CVS HEAD
 | 
			
		||||
  endif
 | 
			
		||||
  ASTERISKVERSION:=SVN-$(shell cat .svnbranch)-r$(shell cat .svnrevision)
 | 
			
		||||
else
 | 
			
		||||
  ASTERISKVERSIONNUM=000000
 | 
			
		||||
  ifneq ($(wildcard .svn),)
 | 
			
		||||
    ASTERISKVERSIONNUM=999999
 | 
			
		||||
    ASTERISKVERSION=SVN-$(shell build_tools/make_svn_branch_name)
 | 
			
		||||
  else
 | 
			
		||||
    ASTERISKVERSIONNUM=000000
 | 
			
		||||
  endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ASTCFLAGS+= $(DEBUG_THREADS)
 | 
			
		||||
@@ -363,7 +367,7 @@ ifeq ($(OSARCH),Darwin)
 | 
			
		||||
  AUDIO_LIBS=-framework CoreAudio
 | 
			
		||||
  ASTLINK=-Wl,-dynamic
 | 
			
		||||
  SOLINK=-dynamic -bundle -undefined suppress -force_flat_namespace
 | 
			
		||||
  OBJS+=poll.o
 | 
			
		||||
  OBJS+= poll.o
 | 
			
		||||
  ASTCFLAGS+=-DPOLLCOMPAT
 | 
			
		||||
else
 | 
			
		||||
#These are used for all but Darwin
 | 
			
		||||
@@ -534,7 +538,7 @@ clean:
 | 
			
		||||
	$(MAKE) -C stdtime clean
 | 
			
		||||
 | 
			
		||||
datafiles: all
 | 
			
		||||
	if test $$(id -u) = 0; then sh mkpkgconfig $(DESTDIR)/usr/lib/pkgconfig; fi
 | 
			
		||||
	if [ x`whoami` = xroot ]; then sh mkpkgconfig $(DESTDIR)/usr/lib/pkgconfig; fi
 | 
			
		||||
	mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/digits
 | 
			
		||||
	mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/priv-callerintros
 | 
			
		||||
	for x in sounds/digits/*.gsm; do \
 | 
			
		||||
@@ -588,17 +592,16 @@ datafiles: all
 | 
			
		||||
	mkdir -p $(DESTDIR)$(AGI_DIR)
 | 
			
		||||
 | 
			
		||||
update: 
 | 
			
		||||
	@if [ -d CVS ]; then \
 | 
			
		||||
		if [ -f patches/.applied ]; then \
 | 
			
		||||
			patches=`cat patches/.applied`; \
 | 
			
		||||
		fi; \
 | 
			
		||||
		if [ ! -z "$$patches" ]; then \
 | 
			
		||||
			for x in $$patches; do \
 | 
			
		||||
				echo "Unapplying $$x..."; \
 | 
			
		||||
				patch -R -p0 < patches/$$x; \
 | 
			
		||||
			done; \
 | 
			
		||||
			rm -f patches/.applied; \
 | 
			
		||||
	@if [ -d .svn ]; then \
 | 
			
		||||
		echo "Updating from Subversion..." ; \
 | 
			
		||||
		svn update | tee update.out; \
 | 
			
		||||
		rm -f .version; \
 | 
			
		||||
		if [ `grep -c ^C update.out` -gt 0 ]; then \
 | 
			
		||||
			echo ; echo "The following files have conflicts:" ; \
 | 
			
		||||
			grep ^C update.out | cut -b4- ; \
 | 
			
		||||
		fi ; \
 | 
			
		||||
		rm -f update.out; \
 | 
			
		||||
	elif [ -d CVS ]; then \
 | 
			
		||||
		echo "Updating from CVS..." ; \
 | 
			
		||||
		cvs -q -z3 update -Pd | tee update.out; \
 | 
			
		||||
		rm -f .version; \
 | 
			
		||||
@@ -607,19 +610,8 @@ update:
 | 
			
		||||
			grep ^C update.out | cut -d' ' -f2- ; \
 | 
			
		||||
		fi ; \
 | 
			
		||||
		rm -f update.out; \
 | 
			
		||||
		if [ ! -z "$$patches" ]; then \
 | 
			
		||||
			for x in $$patches; do \
 | 
			
		||||
				if [ -f patches/$$x ]; then \
 | 
			
		||||
					echo "Applying patch $$x..."; \
 | 
			
		||||
					patch -p0 < patches/$$x; \
 | 
			
		||||
					echo $$x >> patches/.applied; \
 | 
			
		||||
				else \
 | 
			
		||||
					echo "Patch $$x no longer relevant"; \
 | 
			
		||||
				fi; \
 | 
			
		||||
			done; \
 | 
			
		||||
		fi; \
 | 
			
		||||
	else \
 | 
			
		||||
		echo "Not CVS";  \
 | 
			
		||||
		echo "Not under version control";  \
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
NEWHEADERS=$(notdir $(wildcard include/asterisk/*.h))
 | 
			
		||||
@@ -636,6 +628,7 @@ bininstall: all
 | 
			
		||||
	mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/system
 | 
			
		||||
	mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/tmp
 | 
			
		||||
	mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/meetme
 | 
			
		||||
	mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/monitor
 | 
			
		||||
	if [ -f asterisk ]; then $(INSTALL) -m 755 asterisk $(DESTDIR)$(ASTSBINDIR)/; fi
 | 
			
		||||
	if [ -f cygwin/asterisk.exe ]; then $(INSTALL) -m 755 cygwin/asterisk.exe $(DESTDIR)$(ASTSBINDIR)/; fi
 | 
			
		||||
	if [ -f asterisk.dll ]; then $(INSTALL) -m 755 asterisk.dll $(DESTDIR)$(ASTSBINDIR)/; fi
 | 
			
		||||
@@ -831,12 +824,12 @@ __rpm: include/asterisk/version.h spec
 | 
			
		||||
	$(MAKE) DESTDIR=/tmp/asterisk install ; \
 | 
			
		||||
	$(MAKE) DESTDIR=/tmp/asterisk samples ; \
 | 
			
		||||
	mkdir -p /tmp/asterisk/etc/rc.d/init.d ; \
 | 
			
		||||
	cp -f redhat/asterisk /tmp/asterisk/etc/rc.d/init.d/ ; \
 | 
			
		||||
	cp -f contrib/init.d/rc.redhat.asterisk /tmp/asterisk/etc/rc.d/init.d/asterisk ; \
 | 
			
		||||
	rpmbuild --rcfile /usr/lib/rpm/rpmrc:redhat/rpmrc -bb asterisk.spec
 | 
			
		||||
 | 
			
		||||
progdocs:
 | 
			
		||||
	(cat contrib/asterisk-ng-doxygen; echo "HAVE_DOT=$(HAVEDOT) \
 | 
			
		||||
	PROJECT_NUMBER=$(ASTERISKVERSION)  -  $(ASTERISKVERSIONNUM)") | doxygen - 
 | 
			
		||||
	(cat contrib/asterisk-ng-doxygen; echo "HAVE_DOT=$(HAVEDOT)"; \
 | 
			
		||||
	echo "PROJECT_NUMBER=$(ASTERISKVERSION)") | doxygen - 
 | 
			
		||||
 | 
			
		||||
mpg123:
 | 
			
		||||
	@wget -V >/dev/null || (echo "You need wget" ; false )
 | 
			
		||||
@@ -906,47 +899,3 @@ cleantest:
 | 
			
		||||
	if cmp -s .cleancount .lastclean ; then echo ; else \
 | 
			
		||||
		$(MAKE) clean; cp -f .cleancount .lastclean;\
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
patchlist:
 | 
			
		||||
	@echo "Experimental Patches:"
 | 
			
		||||
	@for x in patches/*; do \
 | 
			
		||||
		patch=`basename $$x`; \
 | 
			
		||||
		if [ "$$patch" = "CVS" ]; then \
 | 
			
		||||
			continue; \
 | 
			
		||||
		fi; \
 | 
			
		||||
		if grep -q ^$$patch$$ patches/.applied; then \
 | 
			
		||||
			echo "$$patch (applied)"; \
 | 
			
		||||
		else \
 | 
			
		||||
			echo "$$patch (available)"; \
 | 
			
		||||
		fi; \
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
apply: 
 | 
			
		||||
	@if [ -z "$(PATCH)" ]; then \
 | 
			
		||||
		echo "Usage: make PATCH=<patchname> apply"; \
 | 
			
		||||
	elif grep -q ^$(PATCH)$$ patches/.applied 2>/dev/null; then \
 | 
			
		||||
		echo "Patch $(PATCH) is already applied"; \
 | 
			
		||||
	elif [ -f "patches/$(PATCH)" ]; then \
 | 
			
		||||
		echo "Applying patch $(PATCH)"; \
 | 
			
		||||
		patch -p0 < patches/$(PATCH); \
 | 
			
		||||
		echo "$(PATCH)" >> patches/.applied; \
 | 
			
		||||
	else \
 | 
			
		||||
		echo "No such patch $(PATCH) in patches directory"; \
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
unapply: 
 | 
			
		||||
	@if [ -z "$(PATCH)" ]; then \
 | 
			
		||||
		echo "Usage: make PATCH=<patchname> unapply"; \
 | 
			
		||||
	elif grep -v -q ^$(PATCH)$$ patches/.applied 2>/dev/null; then \
 | 
			
		||||
		echo "Patch $(PATCH) is not applied"; \
 | 
			
		||||
	elif [ -f "patches/$(PATCH)" ]; then \
 | 
			
		||||
		echo "Un-applying patch $(PATCH)"; \
 | 
			
		||||
		patch -p0 -R < patches/$(PATCH); \
 | 
			
		||||
		rm -f patches/.tmpapplied || :; \
 | 
			
		||||
		mv patches/.applied patches/.tmpapplied; \
 | 
			
		||||
		cat patches/.tmpapplied | grep -v ^$(PATCH)$$ > patches/.applied; \
 | 
			
		||||
		rm -f patches/.tmpapplied; \
 | 
			
		||||
	else \
 | 
			
		||||
		echo "No such patch $(PATCH) in patches directory"; \
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +0,0 @@
 | 
			
		||||
About Hold Music
 | 
			
		||||
================
 | 
			
		||||
Digium has licensed the music included with
 | 
			
		||||
the Asterisk distribution From FreePlayMusic
 | 
			
		||||
for use and distribution with Asterisk.  It
 | 
			
		||||
is licensed ONLY for use as hold music within
 | 
			
		||||
an Asterisk based PBX.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										22
									
								
								README.opsound
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								README.opsound
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
About Hold Music
 | 
			
		||||
================
 | 
			
		||||
These files were obtained from http://opsound.org, where the authors placed them
 | 
			
		||||
under the Creative Commons Attribution-Share Alike 2.5 license, a copy of which
 | 
			
		||||
may be found at http://creativecommons.org.
 | 
			
		||||
 | 
			
		||||
Credits
 | 
			
		||||
================
 | 
			
		||||
macroform-cold_day - Paul Shuler (Macroform)
 | 
			
		||||
paulshuler@gmail.com - http://macroform.bandcamp.com/
 | 
			
		||||
 | 
			
		||||
macroform-robot_dity - Paul Shuler (Macroform)
 | 
			
		||||
paulshuler@gmail.com - http://macroform.bandcamp.com/
 | 
			
		||||
 | 
			
		||||
macroform-the_simplicity - Paul Shuler (Macroform)
 | 
			
		||||
paulshuler@gmail.com - http://macroform.bandcamp.com/
 | 
			
		||||
 | 
			
		||||
manolo_camp-morning_coffee - Manolo Camp
 | 
			
		||||
beatbastard@gmx.net - http://ccmixter.org/people/ManoloCamp
 | 
			
		||||
 | 
			
		||||
reno_project-system - Reno Project
 | 
			
		||||
renoproject@hotmail.com - http://www.jamendo.com/en/album/23661
 | 
			
		||||
							
								
								
									
										11
									
								
								UPGRADE.txt
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										11
									
								
								UPGRADE.txt
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -52,8 +52,10 @@ Dialing:
 | 
			
		||||
 | 
			
		||||
IAX: 
 | 
			
		||||
 | 
			
		||||
* The naming convention for IAX channels has changed in a minor way such 
 | 
			
		||||
  that the call number follows a "-" rather than a "/" character.
 | 
			
		||||
* The naming convention for IAX channels has changed in two ways: 
 | 
			
		||||
   1. The call number follows a "-" rather than a "/" character.
 | 
			
		||||
   2. The name of the channel has been simplified to IAX2/peer-callno,
 | 
			
		||||
   rather than IAX2/peer@peer-callno or even IAX2/peer@peer/callno.
 | 
			
		||||
 | 
			
		||||
SIP:
 | 
			
		||||
 | 
			
		||||
@@ -129,6 +131,11 @@ Applications:
 | 
			
		||||
  'mailbox options' menu, and 'change your password' option has been
 | 
			
		||||
  moved to option 5.
 | 
			
		||||
 | 
			
		||||
* The application VoiceMailMain now only matches the 'default' context if
 | 
			
		||||
  none is specified in the arguments.  (This was the previously 
 | 
			
		||||
  documented behavior, however, we didn't follow that behavior.)  The old
 | 
			
		||||
  behavior can be restored by setting searchcontexts=yes in voicemail.conf.
 | 
			
		||||
 | 
			
		||||
Queues:
 | 
			
		||||
 | 
			
		||||
* A queue is now considered empty not only if there are no members but if
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								aescrypt.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								aescrypt.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -1,3 +0,0 @@
 | 
			
		||||
eagi-test
 | 
			
		||||
eagi-sphinx-test
 | 
			
		||||
.depend
 | 
			
		||||
							
								
								
									
										0
									
								
								agi/DialAnMp3.agi
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								agi/DialAnMp3.agi
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								agi/Makefile
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								agi/Makefile
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								agi/agi-test.agi
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								agi/agi-test.agi
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								agi/eagi-sphinx-test.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								agi/eagi-sphinx-test.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								agi/eagi-test.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								agi/eagi-test.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								agi/fastagi-test
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								agi/fastagi-test
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								agi/numeralize
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								agi/numeralize
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										60
									
								
								app.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										60
									
								
								app.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -316,8 +316,12 @@ int ast_dtmf_stream(struct ast_channel *chan,struct ast_channel *peer,char *digi
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if (peer)
 | 
			
		||||
			res = ast_autoservice_stop(peer);
 | 
			
		||||
		if (peer) {
 | 
			
		||||
			/* Stop autoservice on the peer channel, but don't overwrite any error condition 
 | 
			
		||||
			   that has occurred previously while acting on the primary channel */	
 | 
			
		||||
			if (ast_autoservice_stop(peer) && !res)
 | 
			
		||||
				res = -1;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return res;
 | 
			
		||||
}
 | 
			
		||||
@@ -430,11 +434,11 @@ int ast_control_streamfile(struct ast_channel *chan, const char *file,
 | 
			
		||||
			   const char *stop, const char *pause,
 | 
			
		||||
			   const char *restart, int skipms) 
 | 
			
		||||
{
 | 
			
		||||
	long elapsed = 0, last_elapsed = 0;
 | 
			
		||||
	char *breaks = NULL;
 | 
			
		||||
	char *end = NULL;
 | 
			
		||||
	int blen = 2;
 | 
			
		||||
	int res;
 | 
			
		||||
	long pause_restart_point = 0;
 | 
			
		||||
 | 
			
		||||
	if (stop)
 | 
			
		||||
		blen += strlen(stop);
 | 
			
		||||
@@ -456,9 +460,6 @@ int ast_control_streamfile(struct ast_channel *chan, const char *file,
 | 
			
		||||
	if (chan->_state != AST_STATE_UP)
 | 
			
		||||
		res = ast_answer(chan);
 | 
			
		||||
 | 
			
		||||
	if (chan)
 | 
			
		||||
		ast_stopstream(chan);
 | 
			
		||||
 | 
			
		||||
	if (file) {
 | 
			
		||||
		if ((end = strchr(file,':'))) {
 | 
			
		||||
			if (!strcasecmp(end, ":end")) {
 | 
			
		||||
@@ -469,25 +470,18 @@ int ast_control_streamfile(struct ast_channel *chan, const char *file,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for (;;) {
 | 
			
		||||
		struct timeval started = ast_tvnow();
 | 
			
		||||
 | 
			
		||||
		if (chan)
 | 
			
		||||
			ast_stopstream(chan);
 | 
			
		||||
		ast_stopstream(chan);
 | 
			
		||||
		res = ast_streamfile(chan, file, chan->language);
 | 
			
		||||
		if (!res) {
 | 
			
		||||
			if (end) {
 | 
			
		||||
			if (pause_restart_point) {
 | 
			
		||||
				ast_seekstream(chan->stream, pause_restart_point, SEEK_SET);
 | 
			
		||||
				pause_restart_point = 0;
 | 
			
		||||
			}
 | 
			
		||||
			else if (end) {
 | 
			
		||||
				ast_seekstream(chan->stream, 0, SEEK_END);
 | 
			
		||||
				end=NULL;
 | 
			
		||||
			}
 | 
			
		||||
			res = 1;
 | 
			
		||||
			if (elapsed) {
 | 
			
		||||
				ast_stream_fastforward(chan->stream, elapsed);
 | 
			
		||||
				last_elapsed = elapsed - 200;
 | 
			
		||||
			}
 | 
			
		||||
			if (res)
 | 
			
		||||
				res = ast_waitstream_fr(chan, breaks, fwd, rev, skipms);
 | 
			
		||||
			else
 | 
			
		||||
				break;
 | 
			
		||||
				end = NULL;
 | 
			
		||||
			};
 | 
			
		||||
			res = ast_waitstream_fr(chan, breaks, fwd, rev, skipms);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (res < 1)
 | 
			
		||||
@@ -496,17 +490,16 @@ int ast_control_streamfile(struct ast_channel *chan, const char *file,
 | 
			
		||||
		/* We go at next loop if we got the restart char */
 | 
			
		||||
		if (restart && strchr(restart, res)) {
 | 
			
		||||
			ast_log(LOG_DEBUG, "we'll restart the stream here at next loop\n");
 | 
			
		||||
			elapsed=0; /* To make sure the next stream will start at beginning */
 | 
			
		||||
			pause_restart_point = 0;
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (pause != NULL && strchr(pause, res)) {
 | 
			
		||||
			elapsed = ast_tvdiff_ms(ast_tvnow(), started) + last_elapsed;
 | 
			
		||||
			for(;;) {
 | 
			
		||||
				if (chan)
 | 
			
		||||
					ast_stopstream(chan);
 | 
			
		||||
		if (pause && strchr(pause, res)) {
 | 
			
		||||
			pause_restart_point = ast_tellstream(chan->stream);
 | 
			
		||||
			for (;;) {
 | 
			
		||||
				ast_stopstream(chan);
 | 
			
		||||
				res = ast_waitfordigit(chan, 1000);
 | 
			
		||||
				if (res == 0)
 | 
			
		||||
				if (!res)
 | 
			
		||||
					continue;
 | 
			
		||||
				else if (res == -1 || strchr(pause, res) || (stop && strchr(stop, res)))
 | 
			
		||||
					break;
 | 
			
		||||
@@ -516,17 +509,16 @@ int ast_control_streamfile(struct ast_channel *chan, const char *file,
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (res == -1)
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		/* if we get one of our stop chars, return it to the calling function */
 | 
			
		||||
		if (stop && strchr(stop, res)) {
 | 
			
		||||
			/* res = 0; */
 | 
			
		||||
		if (stop && strchr(stop, res))
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if (chan)
 | 
			
		||||
		ast_stopstream(chan);
 | 
			
		||||
 | 
			
		||||
	ast_stopstream(chan);
 | 
			
		||||
 | 
			
		||||
	return res;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +0,0 @@
 | 
			
		||||
.depend
 | 
			
		||||
							
								
								
									
										0
									
								
								apps/Makefile
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/Makefile
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_adsiprog.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_adsiprog.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_alarmreceiver.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_alarmreceiver.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_authenticate.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_authenticate.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_cdr.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_cdr.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_chanisavail.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_chanisavail.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										10
									
								
								apps/app_chanspy.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										10
									
								
								apps/app_chanspy.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -208,9 +208,9 @@ static int start_spying(struct ast_channel *chan, struct ast_channel *spychan, s
 | 
			
		||||
 | 
			
		||||
static void stop_spying(struct ast_channel *chan, struct ast_channel_spy *spy) 
 | 
			
		||||
{
 | 
			
		||||
	/* If our status has changed, then the channel we're spying on is gone....
 | 
			
		||||
	/* If our status has changed to DONE, then the channel we're spying on is gone....
 | 
			
		||||
	   DON'T TOUCH IT!!!  RUN AWAY!!! */
 | 
			
		||||
	if (spy->status != CHANSPY_RUNNING)
 | 
			
		||||
	if (spy->status == CHANSPY_DONE)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	if (!chan)
 | 
			
		||||
@@ -439,8 +439,8 @@ static int chanspy_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
 | 
			
		||||
	if (recbase) {
 | 
			
		||||
		char filename[512];
 | 
			
		||||
		snprintf(filename,sizeof(filename),"%s/%s.%ld.raw",ast_config_AST_MONITOR_DIR, recbase, time(NULL));
 | 
			
		||||
		if ((fd = open(filename, O_CREAT | O_WRONLY, O_TRUNC)) <= 0) {
 | 
			
		||||
		snprintf(filename,sizeof(filename),"%s/%s.%d.raw",ast_config_AST_MONITOR_DIR, recbase, (int)time(NULL));
 | 
			
		||||
		if ((fd = open(filename, O_CREAT | O_WRONLY, O_TRUNC, 0644)) <= 0) {
 | 
			
		||||
			ast_log(LOG_WARNING, "Cannot open %s for recording\n", filename);
 | 
			
		||||
			fd = 0;
 | 
			
		||||
		}
 | 
			
		||||
@@ -482,7 +482,7 @@ static int chanspy_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				
 | 
			
		||||
				if (igrp && (!spec || ((strlen(spec) < strlen(peer->name) &&
 | 
			
		||||
				if (igrp && (!spec || ((strlen(spec) <= strlen(peer->name) &&
 | 
			
		||||
							!strncasecmp(peer->name, spec, strlen(spec)))))) {
 | 
			
		||||
					if (peer && (!bronly || ast_bridged_channel(peer)) &&
 | 
			
		||||
					    !ast_check_hangup(peer) && !ast_test_flag(peer, AST_FLAG_SPYING)) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								apps/app_controlplayback.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										2
									
								
								apps/app_controlplayback.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -140,7 +140,7 @@ static int controlplayback_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
	} else {
 | 
			
		||||
		if (res < 0) {
 | 
			
		||||
			if (priority_jump || option_priority_jumping) {
 | 
			
		||||
				if (!ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101)) {
 | 
			
		||||
				if (ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101)) {
 | 
			
		||||
					ast_log(LOG_WARNING, "ControlPlayback tried to jump to priority n+101 as requested, but priority didn't exist\n");
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								apps/app_curl.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_curl.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										8
									
								
								apps/app_cut.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										8
									
								
								apps/app_cut.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -36,7 +36,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 | 
			
		||||
#include "asterisk/channel.h"
 | 
			
		||||
#include "asterisk/pbx.h"
 | 
			
		||||
#include "asterisk/module.h"
 | 
			
		||||
#include "asterisk/version.h"
 | 
			
		||||
#include "asterisk/app.h"
 | 
			
		||||
 | 
			
		||||
/* Maximum length of any variable */
 | 
			
		||||
@@ -146,8 +145,9 @@ static int sort_internal(struct ast_channel *chan, char *data, char *buffer, siz
 | 
			
		||||
		int blen = strlen(buffer);
 | 
			
		||||
		if (element_count++) {
 | 
			
		||||
			strncat(buffer + blen, ",", buflen - blen - 1);
 | 
			
		||||
			blen++;
 | 
			
		||||
		}
 | 
			
		||||
		strncat(buffer + blen + 1, sortable_keys[count2].key, buflen - blen - 2);
 | 
			
		||||
		strncat(buffer + blen, sortable_keys[count2].key, buflen - blen - 1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
@@ -253,6 +253,8 @@ static int cut_internal(struct ast_channel *chan, char *data, char *buffer, size
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		return ERROR_NOARG;
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
@@ -386,7 +388,7 @@ static char *acf_cut_exec(struct ast_channel *chan, char *cmd, char *data, char
 | 
			
		||||
 | 
			
		||||
	switch (cut_internal(chan, data, buf, len)) {
 | 
			
		||||
	case ERROR_NOARG:
 | 
			
		||||
		ast_log(LOG_ERROR, "Cut() requires an argument\n");
 | 
			
		||||
		ast_log(LOG_ERROR, "CUT() requires an argument\n");
 | 
			
		||||
		break;
 | 
			
		||||
	case ERROR_NOMEM:
 | 
			
		||||
		ast_log(LOG_ERROR, "Out of memory\n");
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								apps/app_datetime.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_datetime.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_db.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_db.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										24
									
								
								apps/app_dial.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										24
									
								
								apps/app_dial.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -75,7 +75,7 @@ static char *descrip =
 | 
			
		||||
"continue if no requested channels can be called, or if the timeout expires.\n\n"
 | 
			
		||||
"  This application sets the following channel variables upon completion:\n"
 | 
			
		||||
"    DIALEDTIME   - This is the time from dialing a channel until when it\n"
 | 
			
		||||
"                   answers.\n" 
 | 
			
		||||
"                   is disconnected.\n" 
 | 
			
		||||
"    ANSWEREDTIME - This is the amount of time for actual call.\n"
 | 
			
		||||
"    DIALSTATUS   - This is the status of the call:\n"
 | 
			
		||||
"                   CHANUNAVAIL | CONGESTION | NOANSWER | BUSY | ANSWER | CANCEL\n" 
 | 
			
		||||
@@ -161,7 +161,7 @@ static char *descrip =
 | 
			
		||||
"    S(x) - Hang up the call after 'x' seconds *after* the called party has\n"
 | 
			
		||||
"           answered the call.\n"  	
 | 
			
		||||
"    t    - Allow the called party to transfer the calling party by sending the\n"
 | 
			
		||||
"           DTMF sequence defiend in features.conf.\n"
 | 
			
		||||
"           DTMF sequence defined in features.conf.\n"
 | 
			
		||||
"    T    - Allow the calling party to transfer the called party by sending the\n"
 | 
			
		||||
"           DTMF sequence defined in features.conf.\n"
 | 
			
		||||
"    w    - Allow the called party to enable recording of the call by sending\n"
 | 
			
		||||
@@ -512,10 +512,8 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localu
 | 
			
		||||
						if (in->cid.cid_ani) {
 | 
			
		||||
							if (o->chan->cid.cid_ani)
 | 
			
		||||
								free(o->chan->cid.cid_ani);
 | 
			
		||||
							o->chan->cid.cid_ani = malloc(strlen(in->cid.cid_ani) + 1);
 | 
			
		||||
							if (o->chan->cid.cid_ani)
 | 
			
		||||
								ast_copy_string(o->chan->cid.cid_ani, in->cid.cid_ani, sizeof(o->chan->cid.cid_ani));
 | 
			
		||||
							else
 | 
			
		||||
							o->chan->cid.cid_ani = strdup(in->cid.cid_ani);
 | 
			
		||||
							if (!o->chan->cid.cid_ani)
 | 
			
		||||
								ast_log(LOG_WARNING, "Out of memory\n");
 | 
			
		||||
						}
 | 
			
		||||
						if (o->chan->cid.cid_rdnis) 
 | 
			
		||||
@@ -650,6 +648,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localu
 | 
			
		||||
					ast_hangup(o->chan);
 | 
			
		||||
					o->chan = NULL;
 | 
			
		||||
					ast_clear_flag(o, DIAL_STILLGOING);
 | 
			
		||||
					HANDLE_CAUSE(in->hangupcause, in);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			o = o->next;
 | 
			
		||||
@@ -737,6 +736,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
 | 
			
		||||
	char numsubst[AST_MAX_EXTENSION];
 | 
			
		||||
	char restofit[AST_MAX_EXTENSION];
 | 
			
		||||
	char cidname[AST_MAX_EXTENSION];
 | 
			
		||||
	char toast[80];
 | 
			
		||||
	char *newnum;
 | 
			
		||||
	char *l;
 | 
			
		||||
	int privdb_val=0;
 | 
			
		||||
@@ -963,7 +963,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
 | 
			
		||||
	/* If a channel group has been specified, get it for use when we create peer channels */
 | 
			
		||||
	outbound_group = pbx_builtin_getvar_helper(chan, "OUTBOUND_GROUP");
 | 
			
		||||
 | 
			
		||||
	ast_copy_flags(peerflags, &opts, OPT_DTMF_EXIT | OPT_GO_ON | OPT_ORIGINAL_CLID);
 | 
			
		||||
	ast_copy_flags(peerflags, &opts, OPT_DTMF_EXIT | OPT_GO_ON | OPT_ORIGINAL_CLID | OPT_CALLER_HANGUP);
 | 
			
		||||
	cur = args.peers;
 | 
			
		||||
	do {
 | 
			
		||||
		/* Remember where to start next time */
 | 
			
		||||
@@ -1515,8 +1515,6 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (!res) {
 | 
			
		||||
			char toast[80];
 | 
			
		||||
 | 
			
		||||
			memset(&config,0,sizeof(struct ast_bridge_config));
 | 
			
		||||
			if (play_to_caller)
 | 
			
		||||
				ast_set_flag(&(config.features_caller), AST_FEATURE_PLAY_WARNING);
 | 
			
		||||
@@ -1560,13 +1558,15 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
 | 
			
		||||
			}
 | 
			
		||||
			res = ast_bridge_call(chan,peer,&config);
 | 
			
		||||
			time(&end_time);
 | 
			
		||||
			snprintf(toast, sizeof(toast), "%ld", (long)(end_time - start_time));
 | 
			
		||||
			pbx_builtin_setvar_helper(chan, "DIALEDTIME", toast);
 | 
			
		||||
			snprintf(toast, sizeof(toast), "%ld", (long)(end_time - answer_time));
 | 
			
		||||
			pbx_builtin_setvar_helper(chan, "ANSWEREDTIME", toast);
 | 
			
		||||
			
 | 
			
		||||
		} else 
 | 
			
		||||
		} else {
 | 
			
		||||
			time(&end_time);
 | 
			
		||||
			res = -1;
 | 
			
		||||
		}
 | 
			
		||||
		snprintf(toast, sizeof(toast), "%ld", (long)(end_time - start_time));
 | 
			
		||||
		pbx_builtin_setvar_helper(chan, "DIALEDTIME", toast);
 | 
			
		||||
		
 | 
			
		||||
		if (res != AST_PBX_NO_HANGUP_PEER) {
 | 
			
		||||
			if (!chan->_softhangup)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								apps/app_dictate.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_dictate.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										4
									
								
								apps/app_directed_pickup.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										4
									
								
								apps/app_directed_pickup.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -77,7 +77,7 @@ static int pickup_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
 | 
			
		||||
	/* Find a channel to pickup */
 | 
			
		||||
	origin = ast_get_channel_by_exten_locked(exten, context);
 | 
			
		||||
	if (origin) {
 | 
			
		||||
	if (origin && origin->cdr) {
 | 
			
		||||
		ast_cdr_getvar(origin->cdr, "dstchannel", &tmp, workspace,
 | 
			
		||||
			       sizeof(workspace), 0);
 | 
			
		||||
		if (tmp) {
 | 
			
		||||
@@ -89,6 +89,8 @@ static int pickup_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
		}
 | 
			
		||||
		ast_mutex_unlock(&origin->lock);
 | 
			
		||||
	} else {
 | 
			
		||||
		if (origin)
 | 
			
		||||
			ast_mutex_unlock(&origin->lock);
 | 
			
		||||
		ast_log(LOG_DEBUG, "No originating channel found.\n");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								apps/app_directory.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_directory.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_disa.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_disa.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_dumpchan.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_dumpchan.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_echo.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_echo.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_enumlookup.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_enumlookup.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_eval.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_eval.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_exec.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_exec.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										30
									
								
								apps/app_externalivr.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										30
									
								
								apps/app_externalivr.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -43,6 +43,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 | 
			
		||||
#include "asterisk/pbx.h"
 | 
			
		||||
#include "asterisk/module.h"
 | 
			
		||||
#include "asterisk/linkedlists.h"
 | 
			
		||||
#include "asterisk/app.h"
 | 
			
		||||
 | 
			
		||||
static const char *tdesc = "External IVR Interface Application";
 | 
			
		||||
 | 
			
		||||
@@ -93,9 +94,9 @@ static void send_child_event(FILE *handle, const char event, const char *data,
 | 
			
		||||
	char tmp[256];
 | 
			
		||||
 | 
			
		||||
	if (!data) {
 | 
			
		||||
		snprintf(tmp, sizeof(tmp), "%c,%10ld", event, time(NULL));
 | 
			
		||||
		snprintf(tmp, sizeof(tmp), "%c,%10d", event, (int)time(NULL));
 | 
			
		||||
	} else {
 | 
			
		||||
		snprintf(tmp, sizeof(tmp), "%c,%10ld,%s", event, time(NULL), data);
 | 
			
		||||
		snprintf(tmp, sizeof(tmp), "%c,%10d,%s", event, (int)time(NULL), data);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fprintf(handle, "%s\n", tmp);
 | 
			
		||||
@@ -250,10 +251,9 @@ static int app_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
	int res = -1;
 | 
			
		||||
	int gen_active = 0;
 | 
			
		||||
	int pid;
 | 
			
		||||
	char *command;
 | 
			
		||||
	char *argv[32];
 | 
			
		||||
	int argc = 1;
 | 
			
		||||
	char *buf;
 | 
			
		||||
	char *buf, *command;
 | 
			
		||||
	FILE *child_commands = NULL;
 | 
			
		||||
	FILE *child_errors = NULL;
 | 
			
		||||
	FILE *child_events = NULL;
 | 
			
		||||
@@ -270,11 +270,13 @@ static int app_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	buf = ast_strdupa(data);
 | 
			
		||||
	command = strsep(&buf, "|");
 | 
			
		||||
	memset(argv, 0, sizeof(argv) / sizeof(argv[0]));
 | 
			
		||||
	argv[0] = command;
 | 
			
		||||
	while ((argc < 31) && (argv[argc++] = strsep(&buf, "|")));
 | 
			
		||||
	argv[argc] = NULL;
 | 
			
		||||
	if (!buf) {
 | 
			
		||||
		ast_log(LOG_ERROR, "Out of memory!\n");
 | 
			
		||||
		LOCAL_USER_REMOVE(u);
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	argc = ast_app_separate_args(buf, '|', argv, sizeof(argv) / sizeof(argv[0]));
 | 
			
		||||
 | 
			
		||||
	if (pipe(child_stdin)) {
 | 
			
		||||
		ast_chan_log(LOG_WARNING, chan, "Could not create pipe for child input: %s\n", strerror(errno));
 | 
			
		||||
@@ -316,8 +318,8 @@ static int app_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
		dup2(child_stderr[1], STDERR_FILENO);
 | 
			
		||||
		for (i = STDERR_FILENO + 1; i < 1024; i++)
 | 
			
		||||
			close(i);
 | 
			
		||||
		execv(command, argv);
 | 
			
		||||
		fprintf(stderr, "Failed to execute '%s': %s\n", command, strerror(errno));
 | 
			
		||||
		execv(argv[0], argv);
 | 
			
		||||
		fprintf(stderr, "Failed to execute '%s': %s\n", argv[0], strerror(errno));
 | 
			
		||||
		exit(1);
 | 
			
		||||
	} else {
 | 
			
		||||
		/* parent process */
 | 
			
		||||
@@ -343,8 +345,6 @@ static int app_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
			goto exit;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		setvbuf(child_events, NULL, _IONBF, 0);
 | 
			
		||||
 | 
			
		||||
		if (!(child_commands = fdopen(child_commands_fd, "r"))) {
 | 
			
		||||
			ast_chan_log(LOG_WARNING, chan, "Could not open stream for child commands\n");
 | 
			
		||||
			goto exit;
 | 
			
		||||
@@ -355,6 +355,10 @@ static int app_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
			goto exit;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		setvbuf(child_events, NULL, _IONBF, 0);
 | 
			
		||||
		setvbuf(child_commands, NULL, _IONBF, 0);
 | 
			
		||||
		setvbuf(child_errors, NULL, _IONBF, 0);
 | 
			
		||||
 | 
			
		||||
		res = 0;
 | 
			
		||||
 | 
			
		||||
		while (1) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								apps/app_festival.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										17
									
								
								apps/app_festival.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -175,7 +175,8 @@ static int send_waveform_to_channel(struct ast_channel *chan, char *waveform, in
 | 
			
		||||
	if (chan->_state != AST_STATE_UP)
 | 
			
		||||
		ast_answer(chan);
 | 
			
		||||
	ast_stopstream(chan);
 | 
			
		||||
 | 
			
		||||
	ast_indicate(chan, -1);
 | 
			
		||||
	
 | 
			
		||||
	owriteformat = chan->writeformat;
 | 
			
		||||
	res = ast_set_write_format(chan, AST_FORMAT_SLINEAR);
 | 
			
		||||
	if (res < 0) {
 | 
			
		||||
@@ -455,8 +456,20 @@ static int festival_exec(struct ast_channel *chan, void *vdata)
 | 
			
		||||
	/* This assumes only one waveform will come back, also LP is unlikely */
 | 
			
		||||
	wave = 0;
 | 
			
		||||
	do {
 | 
			
		||||
               int read_data;
 | 
			
		||||
		for (n=0; n < 3; )
 | 
			
		||||
			n += read(fd,ack+n,3-n);
 | 
			
		||||
               {
 | 
			
		||||
                       read_data = read(fd,ack+n,3-n);
 | 
			
		||||
                       /* this avoids falling in infinite loop
 | 
			
		||||
                        * in case that festival server goes down
 | 
			
		||||
                        * */
 | 
			
		||||
                       if ( read_data == -1 )
 | 
			
		||||
                       {
 | 
			
		||||
                               ast_log(LOG_WARNING,"Unable to read from cache/festival fd");
 | 
			
		||||
                               return -1;
 | 
			
		||||
                       }
 | 
			
		||||
                       n += read_data;
 | 
			
		||||
               }
 | 
			
		||||
		ack[3] = '\0';
 | 
			
		||||
		if (strcmp(ack,"WV\n") == 0) {         /* receive a waveform */
 | 
			
		||||
			ast_log(LOG_DEBUG,"Festival WV command\n");
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								apps/app_flash.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_flash.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_forkcdr.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_forkcdr.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_getcpeid.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_getcpeid.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_groupcount.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_groupcount.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										5
									
								
								apps/app_hasnewvoicemail.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										5
									
								
								apps/app_hasnewvoicemail.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -68,7 +68,7 @@ static char *hasnewvoicemail_descrip =
 | 
			
		||||
"Assumes folder 'INBOX' if folder is not specified. Optionally sets <varname> to the number of messages\n" 
 | 
			
		||||
"in that folder.\n"
 | 
			
		||||
"  The option string may contain zero of the following character:\n"
 | 
			
		||||
"	'j' -- jump to priority n+101, if there is new voicemail in tolder 'folder' or INBOX\n"
 | 
			
		||||
"	'j' -- jump to priority n+101, if there is new voicemail in folder 'folder' or INBOX\n"
 | 
			
		||||
"  This application sets the following channel variable upon completion:\n"
 | 
			
		||||
"	HASVMSTATUS		The result of the new voicemail check returned as a text string as follows\n"
 | 
			
		||||
"		<# of messages in the folder, 0 for NONE>\n";
 | 
			
		||||
@@ -90,7 +90,6 @@ static int hasvoicemail_internal(char *context, char *box, char *folder)
 | 
			
		||||
		while ((vment = readdir(vmdir))) {
 | 
			
		||||
			if (!strncmp(vment->d_name + 7, ".txt", 4)) {
 | 
			
		||||
				count++;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		closedir(vmdir);
 | 
			
		||||
@@ -163,7 +162,7 @@ static int hasvoicemail_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
	if (vmcount > 0) {
 | 
			
		||||
		/* Branch to the next extension */
 | 
			
		||||
		if (priority_jump || option_priority_jumping) {
 | 
			
		||||
			if (!ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101)) 
 | 
			
		||||
			if (ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101)) 
 | 
			
		||||
				ast_log(LOG_WARNING, "VM box %s@%s has new voicemail, but extension %s, priority %d doesn't exist\n", vmbox, context, chan->exten, chan->priority + 101);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								apps/app_ices.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_ices.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_image.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_image.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_intercom.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_intercom.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_ivrdemo.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_ivrdemo.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_lookupblacklist.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_lookupblacklist.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_lookupcidname.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_lookupcidname.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_macro.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_macro.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_math.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_math.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										4
									
								
								apps/app_md5.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										4
									
								
								apps/app_md5.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -157,9 +157,9 @@ static int md5check_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
		ast_log(LOG_DEBUG, "ERROR: MD5 not verified: %s -- %s\n", args.md5hash, args.string);
 | 
			
		||||
	pbx_builtin_setvar_helper(chan, "CHECKMD5STATUS", "NOMATCH");		
 | 
			
		||||
	if (priority_jump || option_priority_jumping) {
 | 
			
		||||
		if (!ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101))
 | 
			
		||||
		if (ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101))
 | 
			
		||||
			if (option_debug > 2)
 | 
			
		||||
				ast_log(LOG_DEBUG, "ERROR: Can't jump to exten+101 (e%s,p%d), sorry\n", chan->exten,chan->priority+101);
 | 
			
		||||
				ast_log(LOG_DEBUG, "Can't jump to exten+101 (e%s,p%d), sorry\n", chan->exten,chan->priority+101);
 | 
			
		||||
	}
 | 
			
		||||
	LOCAL_USER_REMOVE(u);
 | 
			
		||||
	return res;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										22
									
								
								apps/app_meetme.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										22
									
								
								apps/app_meetme.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -263,14 +263,17 @@ static char *istalking(int x)
 | 
			
		||||
		return "(not talking)";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int careful_write(int fd, unsigned char *data, int len)
 | 
			
		||||
static int careful_write(int fd, unsigned char *data, int len, int block)
 | 
			
		||||
{
 | 
			
		||||
	int res;
 | 
			
		||||
	int x;
 | 
			
		||||
 | 
			
		||||
	while (len) {
 | 
			
		||||
		x = ZT_IOMUX_WRITE | ZT_IOMUX_SIGEVENT;
 | 
			
		||||
		res = ioctl(fd, ZT_IOMUX, &x);
 | 
			
		||||
		if (block) {
 | 
			
		||||
			x = ZT_IOMUX_WRITE | ZT_IOMUX_SIGEVENT;
 | 
			
		||||
			res = ioctl(fd, ZT_IOMUX, &x);
 | 
			
		||||
		} else
 | 
			
		||||
			res = 0;
 | 
			
		||||
		if (res >= 0)
 | 
			
		||||
			res = write(fd, data, len);
 | 
			
		||||
		if (res < 1) {
 | 
			
		||||
@@ -423,7 +426,7 @@ static void conf_play(struct ast_channel *chan, struct ast_conference *conf, int
 | 
			
		||||
		len = 0;
 | 
			
		||||
	}
 | 
			
		||||
	if (data) 
 | 
			
		||||
		careful_write(conf->fd, data, len);
 | 
			
		||||
		careful_write(conf->fd, data, len, 1);
 | 
			
		||||
 | 
			
		||||
	ast_mutex_unlock(&conflock);
 | 
			
		||||
 | 
			
		||||
@@ -1307,14 +1310,18 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c
 | 
			
		||||
						   audio frames (in which case carefully writing would only
 | 
			
		||||
						   have delayed the audio even further).
 | 
			
		||||
						*/
 | 
			
		||||
						write(fd, f->data, f->datalen);
 | 
			
		||||
						/* As it turns out, we do want to use careful write.  We just
 | 
			
		||||
						   don't want to block, but we do want to at least *try*
 | 
			
		||||
						   to write out all the samples.
 | 
			
		||||
						 */
 | 
			
		||||
						careful_write(fd, f->data, f->datalen, 0);
 | 
			
		||||
					}
 | 
			
		||||
				} else if ((f->frametype == AST_FRAME_DTMF) && (confflags & CONFFLAG_EXIT_CONTEXT)) {
 | 
			
		||||
					char tmp[2];
 | 
			
		||||
 | 
			
		||||
					tmp[0] = f->subclass;
 | 
			
		||||
					tmp[1] = '\0';
 | 
			
		||||
					if (ast_goto_if_exists(chan, exitcontext, tmp, 1)) {
 | 
			
		||||
					if (!ast_goto_if_exists(chan, exitcontext, tmp, 1)) {
 | 
			
		||||
						ret = 0;
 | 
			
		||||
						break;
 | 
			
		||||
					} else if (option_debug > 1)
 | 
			
		||||
@@ -1623,7 +1630,8 @@ static struct ast_conference *find_conf(struct ast_channel *chan, char *confno,
 | 
			
		||||
			if (dynamic_pin) {
 | 
			
		||||
				if (dynamic_pin[0] == 'q') {
 | 
			
		||||
					/* Query the user to enter a PIN */
 | 
			
		||||
					ast_app_getdata(chan, "conf-getpin", dynamic_pin, AST_MAX_EXTENSION - 1, 0);
 | 
			
		||||
					if (ast_app_getdata(chan, "conf-getpin", dynamic_pin, AST_MAX_EXTENSION - 1, 0) < 0)
 | 
			
		||||
						return NULL;
 | 
			
		||||
				}
 | 
			
		||||
				cnf = build_conf(confno, dynamic_pin, "", make, dynamic);
 | 
			
		||||
			} else {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										15
									
								
								apps/app_milliwatt.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										15
									
								
								apps/app_milliwatt.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -73,30 +73,29 @@ static void milliwatt_release(struct ast_channel *chan, void *data)
 | 
			
		||||
static int milliwatt_generate(struct ast_channel *chan, void *data, int len, int samples)
 | 
			
		||||
{
 | 
			
		||||
	struct ast_frame wf;
 | 
			
		||||
	unsigned char waste[AST_FRIENDLY_OFFSET];
 | 
			
		||||
	unsigned char buf[640];
 | 
			
		||||
	unsigned char buf[AST_FRIENDLY_OFFSET + 640];
 | 
			
		||||
	int i,*indexp = (int *) data;
 | 
			
		||||
 | 
			
		||||
	if (len > sizeof(buf))
 | 
			
		||||
	if (len + AST_FRIENDLY_OFFSET > sizeof(buf))
 | 
			
		||||
	{
 | 
			
		||||
		ast_log(LOG_WARNING,"Only doing %d bytes (%d bytes requested)\n",(int)sizeof(buf),len);
 | 
			
		||||
		len = sizeof(buf);
 | 
			
		||||
		ast_log(LOG_WARNING,"Only doing %d bytes (%d bytes requested)\n",(int)(sizeof(buf) - AST_FRIENDLY_OFFSET),len);
 | 
			
		||||
		len = sizeof(buf) - AST_FRIENDLY_OFFSET;
 | 
			
		||||
	}
 | 
			
		||||
	waste[0] = 0; /* make compiler happy */
 | 
			
		||||
	wf.frametype = AST_FRAME_VOICE;
 | 
			
		||||
	wf.subclass = AST_FORMAT_ULAW;
 | 
			
		||||
	wf.offset = AST_FRIENDLY_OFFSET;
 | 
			
		||||
	wf.mallocd = 0;
 | 
			
		||||
	wf.data = buf;
 | 
			
		||||
	wf.data = buf + AST_FRIENDLY_OFFSET;
 | 
			
		||||
	wf.datalen = len;
 | 
			
		||||
	wf.samples = wf.datalen;
 | 
			
		||||
	wf.src = "app_milliwatt";
 | 
			
		||||
	wf.delivery.tv_sec = 0;
 | 
			
		||||
	wf.delivery.tv_usec = 0;
 | 
			
		||||
	wf.prev = wf.next = NULL;
 | 
			
		||||
	/* create a buffer containing the digital milliwatt pattern */
 | 
			
		||||
	for(i = 0; i < len; i++)
 | 
			
		||||
	{
 | 
			
		||||
		buf[i] = digital_milliwatt[(*indexp)++];
 | 
			
		||||
		buf[AST_FRIENDLY_OFFSET + i] = digital_milliwatt[(*indexp)++];
 | 
			
		||||
		*indexp &= 7;
 | 
			
		||||
	}
 | 
			
		||||
	if (ast_write(chan,&wf) < 0)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								apps/app_mixmonitor.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										4
									
								
								apps/app_mixmonitor.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -112,9 +112,9 @@ AST_APP_OPTIONS(mixmonitor_opts, {
 | 
			
		||||
 | 
			
		||||
static void stopmon(struct ast_channel *chan, struct ast_channel_spy *spy) 
 | 
			
		||||
{
 | 
			
		||||
	/* If our status has changed, then the channel we're spying on is gone....
 | 
			
		||||
	/* If our status has changed to DONE, then the channel we're spying on is gone....
 | 
			
		||||
	   DON'T TOUCH IT!!!  RUN AWAY!!! */
 | 
			
		||||
	if (spy->status != CHANSPY_RUNNING)
 | 
			
		||||
	if (spy->status == CHANSPY_DONE)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	if (!chan)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								apps/app_mp3.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_mp3.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_nbscat.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_nbscat.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										4
									
								
								apps/app_osplookup.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										4
									
								
								apps/app_osplookup.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -217,6 +217,10 @@ static int ospnext_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
	temp = pbx_builtin_getvar_helper(chan, "OSPHANDLE");
 | 
			
		||||
	result.handle = -1;
 | 
			
		||||
	if (!ast_strlen_zero(temp) && (sscanf(temp, "%d", &result.handle) == 1) && (result.handle > -1)) {
 | 
			
		||||
		temp = pbx_builtin_getvar_helper(chan, "OSPRESULTS");
 | 
			
		||||
		if (ast_strlen_zero(temp) || (sscanf(temp, "%d", &result.numresults) != 1)) {
 | 
			
		||||
			result.numresults = 0;
 | 
			
		||||
		}
 | 
			
		||||
		if ((res = ast_osp_next(&result, cause)) > 0) {
 | 
			
		||||
			char tmp[80];
 | 
			
		||||
			snprintf(tmp, sizeof(tmp), "%d", result.handle);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										30
									
								
								apps/app_page.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										30
									
								
								apps/app_page.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -40,6 +40,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 | 
			
		||||
#include "asterisk/module.h"
 | 
			
		||||
#include "asterisk/file.h"
 | 
			
		||||
#include "asterisk/app.h"
 | 
			
		||||
#include "asterisk/chanvars.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static const char *tdesc = "Page Multiple Phones";
 | 
			
		||||
@@ -77,13 +78,14 @@ struct calloutdata {
 | 
			
		||||
	char tech[64];
 | 
			
		||||
	char resource[256];
 | 
			
		||||
	char meetmeopts[64];
 | 
			
		||||
	struct ast_variable *variables;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static void *page_thread(void *data)
 | 
			
		||||
{
 | 
			
		||||
	struct calloutdata *cd = data;
 | 
			
		||||
	ast_pbx_outgoing_app(cd->tech, AST_FORMAT_SLINEAR, cd->resource, 30000,
 | 
			
		||||
		"MeetMe", cd->meetmeopts, NULL, 0, cd->cidnum, cd->cidname, NULL, NULL);
 | 
			
		||||
		"MeetMe", cd->meetmeopts, NULL, 0, cd->cidnum, cd->cidname, cd->variables, NULL);
 | 
			
		||||
	free(cd);
 | 
			
		||||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
@@ -91,6 +93,9 @@ static void *page_thread(void *data)
 | 
			
		||||
static void launch_page(struct ast_channel *chan, const char *meetmeopts, const char *tech, const char *resource)
 | 
			
		||||
{
 | 
			
		||||
	struct calloutdata *cd;
 | 
			
		||||
	const char *varname;
 | 
			
		||||
	struct ast_variable *lastvar = NULL;
 | 
			
		||||
	struct ast_var_t *varptr;
 | 
			
		||||
	pthread_t t;
 | 
			
		||||
	pthread_attr_t attr;
 | 
			
		||||
	cd = malloc(sizeof(struct calloutdata));
 | 
			
		||||
@@ -101,6 +106,29 @@ static void launch_page(struct ast_channel *chan, const char *meetmeopts, const
 | 
			
		||||
		ast_copy_string(cd->tech, tech, sizeof(cd->tech));
 | 
			
		||||
		ast_copy_string(cd->resource, resource, sizeof(cd->resource));
 | 
			
		||||
		ast_copy_string(cd->meetmeopts, meetmeopts, sizeof(cd->meetmeopts));
 | 
			
		||||
 | 
			
		||||
		AST_LIST_TRAVERSE(&chan->varshead, varptr, entries) {
 | 
			
		||||
			if (!(varname = ast_var_full_name(varptr)))
 | 
			
		||||
				continue;
 | 
			
		||||
			if (varname[0] == '_') {
 | 
			
		||||
				struct ast_variable *newvar = NULL;
 | 
			
		||||
 | 
			
		||||
				if (varname[1] == '_') {
 | 
			
		||||
					newvar = ast_variable_new(varname, ast_var_value(varptr));
 | 
			
		||||
				} else {
 | 
			
		||||
					newvar = ast_variable_new(&varname[1], ast_var_value(varptr));
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if (newvar) {
 | 
			
		||||
					if (lastvar)
 | 
			
		||||
						lastvar->next = newvar;
 | 
			
		||||
					else
 | 
			
		||||
						cd->variables = newvar;
 | 
			
		||||
					lastvar = newvar;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		pthread_attr_init(&attr);
 | 
			
		||||
		pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
 | 
			
		||||
		if (ast_pthread_create(&t, &attr, page_thread, cd)) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								apps/app_parkandannounce.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_parkandannounce.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_playback.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_playback.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										2
									
								
								apps/app_privacy.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										2
									
								
								apps/app_privacy.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -193,7 +193,7 @@ static int privacy_exec (struct ast_channel *chan, void *data)
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		/*Got a number, play sounds and send them on their way*/
 | 
			
		||||
		if ((retries < maxretries) && res == 1 ) {
 | 
			
		||||
		if ((retries < maxretries) && !res ) {
 | 
			
		||||
			res = ast_streamfile(chan, "privacy-thankyou", chan->language);
 | 
			
		||||
			if (!res)
 | 
			
		||||
				res = ast_waitstream(chan, "");
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										266
									
								
								apps/app_queue.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										266
									
								
								apps/app_queue.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -484,11 +484,11 @@ static void *changethread(void *data)
 | 
			
		||||
							"Membership: %s\r\n"
 | 
			
		||||
							"Penalty: %d\r\n"
 | 
			
		||||
							"CallsTaken: %d\r\n"
 | 
			
		||||
							"LastCall: %ld\r\n"
 | 
			
		||||
							"LastCall: %d\r\n"
 | 
			
		||||
							"Status: %d\r\n"
 | 
			
		||||
							"Paused: %d\r\n",
 | 
			
		||||
						q->name, cur->interface, cur->dynamic ? "dynamic" : "static",
 | 
			
		||||
						cur->penalty, cur->calls, cur->lastcall, cur->status, cur->paused);
 | 
			
		||||
						cur->penalty, cur->calls, (int)cur->lastcall, cur->status, cur->paused);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
@@ -755,28 +755,66 @@ static void rt_handle_member_record(struct ast_call_queue *q, char *interface, c
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void free_members(struct ast_call_queue *q, int all)
 | 
			
		||||
{
 | 
			
		||||
	/* Free non-dynamic members */
 | 
			
		||||
	struct member *curm, *next, *prev = NULL;
 | 
			
		||||
 | 
			
		||||
	for (curm = q->members; curm; curm = next) {
 | 
			
		||||
		next = curm->next;
 | 
			
		||||
		if (all || !curm->dynamic) {
 | 
			
		||||
			if (prev)
 | 
			
		||||
				prev->next = next;
 | 
			
		||||
			else
 | 
			
		||||
				q->members = next;
 | 
			
		||||
			free(curm);
 | 
			
		||||
		} else 
 | 
			
		||||
			prev = curm;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void destroy_queue(struct ast_call_queue *q)
 | 
			
		||||
{
 | 
			
		||||
	free_members(q, 1);
 | 
			
		||||
	ast_mutex_destroy(&q->lock);
 | 
			
		||||
	free(q);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void remove_queue(struct ast_call_queue *q)
 | 
			
		||||
{
 | 
			
		||||
	struct ast_call_queue *cur, *prev = NULL;
 | 
			
		||||
 | 
			
		||||
	ast_mutex_lock(&qlock);
 | 
			
		||||
	for (cur = queues; cur; cur = cur->next) {
 | 
			
		||||
		if (cur == q) {
 | 
			
		||||
			if (prev)
 | 
			
		||||
				prev->next = cur->next;
 | 
			
		||||
			else
 | 
			
		||||
				queues = cur->next;
 | 
			
		||||
		} else {
 | 
			
		||||
			prev = cur;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	ast_mutex_unlock(&qlock);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*!\brief Reload a single queue via realtime.
 | 
			
		||||
   \return Return the queue, or NULL if it doesn't exist.
 | 
			
		||||
   \note Should be called with the global qlock locked.
 | 
			
		||||
   When found, the queue is returned with q->lock locked. */
 | 
			
		||||
static struct ast_call_queue *reload_queue_rt(const char *queuename, struct ast_variable *queue_vars, struct ast_config *member_config)
 | 
			
		||||
   \note Should be called with the global qlock locked. */
 | 
			
		||||
static struct ast_call_queue *find_queue_by_name_rt(const char *queuename, struct ast_variable *queue_vars, struct ast_config *member_config)
 | 
			
		||||
{
 | 
			
		||||
	struct ast_variable *v;
 | 
			
		||||
	struct ast_call_queue *q, *prev_q;
 | 
			
		||||
	struct ast_call_queue *q, *prev_q = NULL;
 | 
			
		||||
	struct member *m, *prev_m, *next_m;
 | 
			
		||||
	char *interface;
 | 
			
		||||
	char *tmp, *tmp_name;
 | 
			
		||||
	char tmpbuf[64];	/* Must be longer than the longest queue param name. */
 | 
			
		||||
 | 
			
		||||
	/* Find the queue in the in-core list (we will create a new one if not found). */
 | 
			
		||||
	q = queues;
 | 
			
		||||
	prev_q = NULL;
 | 
			
		||||
	while (q) {
 | 
			
		||||
	for (q = queues; q; q = q->next) {
 | 
			
		||||
		if (!strcasecmp(q->name, queuename)) {
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
		q = q->next;
 | 
			
		||||
		prev_q = q;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -788,6 +826,7 @@ static struct ast_call_queue *reload_queue_rt(const char *queuename, struct ast_
 | 
			
		||||
				ast_mutex_unlock(&q->lock);
 | 
			
		||||
				return NULL;
 | 
			
		||||
			} else {
 | 
			
		||||
				ast_mutex_unlock(&q->lock);
 | 
			
		||||
				return q;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
@@ -814,7 +853,7 @@ static struct ast_call_queue *reload_queue_rt(const char *queuename, struct ast_
 | 
			
		||||
					prev_q->next = q->next;
 | 
			
		||||
				}
 | 
			
		||||
				ast_mutex_unlock(&q->lock);
 | 
			
		||||
				free(q);
 | 
			
		||||
				destroy_queue(q);
 | 
			
		||||
			} else
 | 
			
		||||
				ast_mutex_unlock(&q->lock);
 | 
			
		||||
		}
 | 
			
		||||
@@ -850,10 +889,11 @@ static struct ast_call_queue *reload_queue_rt(const char *queuename, struct ast_
 | 
			
		||||
		v = v->next;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Temporarily set members dead so we can detect deleted ones. */
 | 
			
		||||
	/* Temporarily set non-dynamic members dead so we can detect deleted ones. */
 | 
			
		||||
	m = q->members;
 | 
			
		||||
	while (m) {
 | 
			
		||||
		m->dead = 1;
 | 
			
		||||
		if (!m->dynamic)
 | 
			
		||||
			m->dead = 1;
 | 
			
		||||
		m = m->next;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -881,13 +921,60 @@ static struct ast_call_queue *reload_queue_rt(const char *queuename, struct ast_
 | 
			
		||||
		m = next_m;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ast_mutex_unlock(&q->lock);
 | 
			
		||||
 | 
			
		||||
	return q;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static struct ast_call_queue *load_realtime_queue(char *queuename)
 | 
			
		||||
{
 | 
			
		||||
	struct ast_variable *queue_vars = NULL;
 | 
			
		||||
	struct ast_config *member_config = NULL;
 | 
			
		||||
	struct ast_call_queue *q;
 | 
			
		||||
 | 
			
		||||
	/* Find the queue in the in-core list first. */
 | 
			
		||||
	ast_mutex_lock(&qlock);
 | 
			
		||||
	for (q = queues; q; q = q->next) {
 | 
			
		||||
		if (!strcasecmp(q->name, queuename)) {
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	ast_mutex_unlock(&qlock);
 | 
			
		||||
 | 
			
		||||
	if (!q) {
 | 
			
		||||
		/*! \note Load from realtime before taking the global qlock, to avoid blocking all
 | 
			
		||||
		   queue operations while waiting for the DB.
 | 
			
		||||
 | 
			
		||||
		   This will be two separate database transactions, so we might
 | 
			
		||||
		   see queue parameters as they were before another process
 | 
			
		||||
		   changed the queue and member list as it was after the change.
 | 
			
		||||
		   Thus we might see an empty member list when a queue is
 | 
			
		||||
		   deleted. In practise, this is unlikely to cause a problem. */
 | 
			
		||||
 | 
			
		||||
		queue_vars = ast_load_realtime("queues", "name", queuename, NULL);
 | 
			
		||||
		if (queue_vars) {
 | 
			
		||||
			member_config = ast_load_realtime_multientry("queue_members", "interface LIKE", "%", "queue_name", queuename, NULL);
 | 
			
		||||
			if (!member_config) {
 | 
			
		||||
				ast_log(LOG_ERROR, "no queue_members defined in your config (extconfig.conf).\n");
 | 
			
		||||
				return NULL;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ast_mutex_lock(&qlock);
 | 
			
		||||
 | 
			
		||||
		q = find_queue_by_name_rt(queuename, queue_vars, member_config);
 | 
			
		||||
		if (member_config)
 | 
			
		||||
			ast_config_destroy(member_config);
 | 
			
		||||
		if (queue_vars)
 | 
			
		||||
			ast_variables_destroy(queue_vars);
 | 
			
		||||
 | 
			
		||||
		ast_mutex_unlock(&qlock);
 | 
			
		||||
	}
 | 
			
		||||
	return q;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int join_queue(char *queuename, struct queue_ent *qe, enum queue_result *reason)
 | 
			
		||||
{
 | 
			
		||||
	struct ast_variable *queue_vars = NULL;
 | 
			
		||||
	struct ast_config *member_config = NULL;
 | 
			
		||||
	struct ast_call_queue *q;
 | 
			
		||||
	struct queue_ent *cur, *prev = NULL;
 | 
			
		||||
	int res = -1;
 | 
			
		||||
@@ -895,35 +982,12 @@ static int join_queue(char *queuename, struct queue_ent *qe, enum queue_result *
 | 
			
		||||
	int inserted = 0;
 | 
			
		||||
	enum queue_member_status stat;
 | 
			
		||||
 | 
			
		||||
	/*! \note Load from realtime before taking the global qlock, to avoid blocking all
 | 
			
		||||
	   queue operations while waiting for the DB.
 | 
			
		||||
 | 
			
		||||
	   This will be two separate database transactions, so we might
 | 
			
		||||
	   see queue parameters as they were before another process
 | 
			
		||||
	   changed the queue and member list as it was after the change.
 | 
			
		||||
	   Thus we might see an empty member list when a queue is
 | 
			
		||||
	   deleted. In practise, this is unlikely to cause a problem. */
 | 
			
		||||
	queue_vars = ast_load_realtime("queues", "name", queuename, NULL);
 | 
			
		||||
	if (queue_vars) {
 | 
			
		||||
		member_config = ast_load_realtime_multientry("queue_members", "interface LIKE", "%", "queue_name", queuename, NULL);
 | 
			
		||||
		if (!member_config) {
 | 
			
		||||
			ast_log(LOG_ERROR, "no queue_members defined in your config (extconfig.conf).\n");
 | 
			
		||||
			return res;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	q = load_realtime_queue(queuename);
 | 
			
		||||
	if (!q)
 | 
			
		||||
		return res;
 | 
			
		||||
 | 
			
		||||
	ast_mutex_lock(&qlock);
 | 
			
		||||
	q = reload_queue_rt(queuename, queue_vars, member_config);
 | 
			
		||||
	/* Note: If found, reload_queue_rt() returns with q->lock locked. */
 | 
			
		||||
	if(member_config)
 | 
			
		||||
		ast_config_destroy(member_config);
 | 
			
		||||
	if(queue_vars)
 | 
			
		||||
		ast_variables_destroy(queue_vars);
 | 
			
		||||
 | 
			
		||||
	if (!q) {
 | 
			
		||||
		ast_mutex_unlock(&qlock);
 | 
			
		||||
		return res;
 | 
			
		||||
	}
 | 
			
		||||
	ast_mutex_lock(&q->lock);
 | 
			
		||||
 | 
			
		||||
	/* This is our one */
 | 
			
		||||
	stat = get_member_status(q);
 | 
			
		||||
@@ -975,48 +1039,6 @@ ast_log(LOG_NOTICE, "Queue '%s' Join, Channel '%s', Position '%d'\n", q->name, q
 | 
			
		||||
	return res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void free_members(struct ast_call_queue *q, int all)
 | 
			
		||||
{
 | 
			
		||||
	/* Free non-dynamic members */
 | 
			
		||||
	struct member *curm, *next, *prev;
 | 
			
		||||
 | 
			
		||||
	curm = q->members;
 | 
			
		||||
	prev = NULL;
 | 
			
		||||
	while(curm) {
 | 
			
		||||
		next = curm->next;
 | 
			
		||||
		if (all || !curm->dynamic) {
 | 
			
		||||
			if (prev)
 | 
			
		||||
				prev->next = next;
 | 
			
		||||
			else
 | 
			
		||||
				q->members = next;
 | 
			
		||||
			free(curm);
 | 
			
		||||
		} else 
 | 
			
		||||
			prev = curm;
 | 
			
		||||
		curm = next;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void destroy_queue(struct ast_call_queue *q)
 | 
			
		||||
{
 | 
			
		||||
	struct ast_call_queue *cur, *prev = NULL;
 | 
			
		||||
 | 
			
		||||
	ast_mutex_lock(&qlock);
 | 
			
		||||
	for (cur = queues; cur; cur = cur->next) {
 | 
			
		||||
		if (cur == q) {
 | 
			
		||||
			if (prev)
 | 
			
		||||
				prev->next = cur->next;
 | 
			
		||||
			else
 | 
			
		||||
				queues = cur->next;
 | 
			
		||||
		} else {
 | 
			
		||||
			prev = cur;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	ast_mutex_unlock(&qlock);
 | 
			
		||||
	free_members(q, 1);
 | 
			
		||||
        ast_mutex_destroy(&q->lock);
 | 
			
		||||
	free(q);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int play_file(struct ast_channel *chan, char *filename)
 | 
			
		||||
{
 | 
			
		||||
	int res;
 | 
			
		||||
@@ -1224,6 +1246,7 @@ ast_log(LOG_NOTICE, "Queue '%s' Leave, Channel '%s'\n", q->name, qe->chan->name
 | 
			
		||||
	ast_mutex_unlock(&q->lock);
 | 
			
		||||
	if (q->dead && !q->count) {	
 | 
			
		||||
		/* It's dead and nobody is in it, so kill it */
 | 
			
		||||
		remove_queue(q);
 | 
			
		||||
		destroy_queue(q);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -1261,11 +1284,11 @@ static int update_status(struct ast_call_queue *q, struct member *member, int st
 | 
			
		||||
					"Membership: %s\r\n"
 | 
			
		||||
					"Penalty: %d\r\n"
 | 
			
		||||
					"CallsTaken: %d\r\n"
 | 
			
		||||
					"LastCall: %ld\r\n"
 | 
			
		||||
					"LastCall: %d\r\n"
 | 
			
		||||
					"Status: %d\r\n"
 | 
			
		||||
					"Paused: %d\r\n",
 | 
			
		||||
				q->name, cur->interface, cur->dynamic ? "dynamic" : "static",
 | 
			
		||||
				cur->penalty, cur->calls, cur->lastcall, cur->status, cur->paused);
 | 
			
		||||
				cur->penalty, cur->calls, (int)cur->lastcall, cur->status, cur->paused);
 | 
			
		||||
			}
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
@@ -1304,7 +1327,7 @@ static int compare_weight(struct ast_call_queue *rq, struct member *member)
 | 
			
		||||
		ast_mutex_lock(&q->lock);
 | 
			
		||||
		if (q->count && q->members) {
 | 
			
		||||
			for (mem = q->members; mem; mem = mem->next) {
 | 
			
		||||
				if (mem == member) {
 | 
			
		||||
				if (!strcmp(mem->interface, member->interface)) {
 | 
			
		||||
					ast_log(LOG_DEBUG, "Found matching member %s in queue '%s'\n", mem->interface, q->name);
 | 
			
		||||
					if (q->weight > rq->weight) {
 | 
			
		||||
						ast_log(LOG_DEBUG, "Queue '%s' (weight %d, calls %d) is preferred over '%s' (weight %d, calls %d)\n", q->name, q->weight, q->count, rq->name, rq->weight, rq->count);
 | 
			
		||||
@@ -2404,41 +2427,42 @@ static int add_to_queue(char *queuename, char *interface, int penalty, int pause
 | 
			
		||||
	struct member *new_member;
 | 
			
		||||
	int res = RES_NOSUCHQUEUE;
 | 
			
		||||
 | 
			
		||||
	/* \note Ensure the appropriate realtime queue is loaded.  Note that this
 | 
			
		||||
	 * short-circuits if the queue is already in memory. */
 | 
			
		||||
	q = load_realtime_queue(queuename);
 | 
			
		||||
 | 
			
		||||
	ast_mutex_lock(&qlock);
 | 
			
		||||
	for (q = queues ; q ; q = q->next) {
 | 
			
		||||
 | 
			
		||||
	if (q) {
 | 
			
		||||
		ast_mutex_lock(&q->lock);
 | 
			
		||||
		if (!strcmp(q->name, queuename)) {
 | 
			
		||||
			if (interface_exists(q, interface) == NULL) {
 | 
			
		||||
				new_member = create_queue_member(interface, penalty, paused);
 | 
			
		||||
		if (interface_exists(q, interface) == NULL) {
 | 
			
		||||
			new_member = create_queue_member(interface, penalty, paused);
 | 
			
		||||
 | 
			
		||||
				if (new_member != NULL) {
 | 
			
		||||
					new_member->dynamic = 1;
 | 
			
		||||
					new_member->next = q->members;
 | 
			
		||||
					q->members = new_member;
 | 
			
		||||
					manager_event(EVENT_FLAG_AGENT, "QueueMemberAdded",
 | 
			
		||||
						"Queue: %s\r\n"
 | 
			
		||||
						"Location: %s\r\n"
 | 
			
		||||
						"Membership: %s\r\n"
 | 
			
		||||
						"Penalty: %d\r\n"
 | 
			
		||||
						"CallsTaken: %d\r\n"
 | 
			
		||||
						"LastCall: %ld\r\n"
 | 
			
		||||
						"Status: %d\r\n"
 | 
			
		||||
						"Paused: %d\r\n",
 | 
			
		||||
					q->name, new_member->interface, new_member->dynamic ? "dynamic" : "static",
 | 
			
		||||
					new_member->penalty, new_member->calls, new_member->lastcall, new_member->status, new_member->paused);
 | 
			
		||||
			if (new_member != NULL) {
 | 
			
		||||
				new_member->dynamic = 1;
 | 
			
		||||
				new_member->next = q->members;
 | 
			
		||||
				q->members = new_member;
 | 
			
		||||
				manager_event(EVENT_FLAG_AGENT, "QueueMemberAdded",
 | 
			
		||||
					"Queue: %s\r\n"
 | 
			
		||||
					"Location: %s\r\n"
 | 
			
		||||
					"Membership: %s\r\n"
 | 
			
		||||
					"Penalty: %d\r\n"
 | 
			
		||||
					"CallsTaken: %d\r\n"
 | 
			
		||||
					"LastCall: %d\r\n"
 | 
			
		||||
					"Status: %d\r\n"
 | 
			
		||||
					"Paused: %d\r\n",
 | 
			
		||||
				q->name, new_member->interface, new_member->dynamic ? "dynamic" : "static",
 | 
			
		||||
				new_member->penalty, new_member->calls, (int)new_member->lastcall, new_member->status, new_member->paused);
 | 
			
		||||
					
 | 
			
		||||
					if (dump)
 | 
			
		||||
						dump_queue_members(q);
 | 
			
		||||
				if (dump)
 | 
			
		||||
					dump_queue_members(q);
 | 
			
		||||
 | 
			
		||||
					res = RES_OKAY;
 | 
			
		||||
				} else {
 | 
			
		||||
					res = RES_OUTOFMEMORY;
 | 
			
		||||
				}
 | 
			
		||||
				res = RES_OKAY;
 | 
			
		||||
			} else {
 | 
			
		||||
				res = RES_EXISTS;
 | 
			
		||||
				res = RES_OUTOFMEMORY;
 | 
			
		||||
			}
 | 
			
		||||
			ast_mutex_unlock(&q->lock);
 | 
			
		||||
			break;
 | 
			
		||||
		} else {
 | 
			
		||||
			res = RES_EXISTS;
 | 
			
		||||
		}
 | 
			
		||||
		ast_mutex_unlock(&q->lock);
 | 
			
		||||
	}
 | 
			
		||||
@@ -3243,7 +3267,7 @@ static void reload_queues(void)
 | 
			
		||||
			else
 | 
			
		||||
				queues = q->next;
 | 
			
		||||
			if (!q->count) {
 | 
			
		||||
				free(q);
 | 
			
		||||
				destroy_queue(q);
 | 
			
		||||
			} else
 | 
			
		||||
				ast_log(LOG_WARNING, "XXX Leaking a little memory :( XXX\n");
 | 
			
		||||
		} else {
 | 
			
		||||
@@ -3272,7 +3296,13 @@ static int __queues_show(int manager, int fd, int argc, char **argv, int queue_s
 | 
			
		||||
	time(&now);
 | 
			
		||||
	if ((!queue_show && argc != 2) || (queue_show && argc != 3))
 | 
			
		||||
		return RESULT_SHOWUSAGE;
 | 
			
		||||
 | 
			
		||||
	/* We only want to load realtime queues when a specific queue is asked for. */
 | 
			
		||||
	if (queue_show)
 | 
			
		||||
		load_realtime_queue(argv[2]);
 | 
			
		||||
 | 
			
		||||
	ast_mutex_lock(&qlock);
 | 
			
		||||
 | 
			
		||||
	q = queues;
 | 
			
		||||
	if (!q) {	
 | 
			
		||||
		ast_mutex_unlock(&qlock);
 | 
			
		||||
@@ -3435,13 +3465,13 @@ static int manager_queues_status( struct mansession *s, struct message *m )
 | 
			
		||||
						"Membership: %s\r\n"
 | 
			
		||||
						"Penalty: %d\r\n"
 | 
			
		||||
						"CallsTaken: %d\r\n"
 | 
			
		||||
						"LastCall: %ld\r\n"
 | 
			
		||||
						"LastCall: %d\r\n"
 | 
			
		||||
						"Status: %d\r\n"
 | 
			
		||||
						"Paused: %d\r\n"
 | 
			
		||||
						"%s"
 | 
			
		||||
						"\r\n",
 | 
			
		||||
							q->name, mem->interface, mem->dynamic ? "dynamic" : "static",
 | 
			
		||||
							mem->penalty, mem->calls, mem->lastcall, mem->status, mem->paused, idText);
 | 
			
		||||
							mem->penalty, mem->calls, (int)mem->lastcall, mem->status, mem->paused, idText);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			/* List Queue Entries */
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								apps/app_random.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_random.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_read.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_read.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_readfile.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_readfile.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_realtime.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_realtime.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										8
									
								
								apps/app_record.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										8
									
								
								apps/app_record.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -277,6 +277,7 @@ static int record_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
			
 | 
			
		||||
			if (res) {
 | 
			
		||||
				ast_log(LOG_WARNING, "Problem writing frame\n");
 | 
			
		||||
				ast_frfree(f);
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
@@ -295,16 +296,15 @@ static int record_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if (f->frametype == AST_FRAME_VIDEO) {
 | 
			
		||||
		} else if (f->frametype == AST_FRAME_VIDEO) {
 | 
			
		||||
			res = ast_writestream(s, f);
 | 
			
		||||
			
 | 
			
		||||
			if (res) {
 | 
			
		||||
				ast_log(LOG_WARNING, "Problem writing frame\n");
 | 
			
		||||
				ast_frfree(f);
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if ((f->frametype == AST_FRAME_DTMF) &&
 | 
			
		||||
		} else if ((f->frametype == AST_FRAME_DTMF) &&
 | 
			
		||||
		    (f->subclass == terminator)) {
 | 
			
		||||
			ast_frfree(f);
 | 
			
		||||
			break;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								apps/app_rpt.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_rpt.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_sayunixtime.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_sayunixtime.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_senddtmf.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_senddtmf.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_sendtext.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_sendtext.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_setcallerid.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_setcallerid.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_setcdruserfield.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_setcdruserfield.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_setcidname.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_setcidname.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_setcidnum.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_setcidnum.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_setrdnis.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_setrdnis.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								apps/app_settransfercapability.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_settransfercapability.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										5
									
								
								apps/app_skel.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										5
									
								
								apps/app_skel.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) <Year>, <Your Name Here>
 | 
			
		||||
 *
 | 
			
		||||
 * <Your Name Here> <<You Email Here>>
 | 
			
		||||
 * <Your Name Here> <<Your Email Here>>
 | 
			
		||||
 *
 | 
			
		||||
 * See http://www.asterisk.org for more information about
 | 
			
		||||
 * the Asterisk project. Please do not directly contact
 | 
			
		||||
@@ -20,7 +20,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * \brief Skeleton application
 | 
			
		||||
 * 
 | 
			
		||||
 * This is a skeleton for development of an Asterisk application */
 | 
			
		||||
 * This is a skeleton for development of an Asterisk application
 | 
			
		||||
 * \ingroup applications
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@@ -77,7 +77,6 @@ static int app_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
 | 
			
		||||
	if (ast_strlen_zero(data)) {
 | 
			
		||||
		ast_log(LOG_WARNING, "%s requires an argument (dummy|[options])\n",app);
 | 
			
		||||
		LOCAL_USER_REMOVE(u);
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								apps/app_sms.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										8
									
								
								apps/app_sms.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -694,7 +694,7 @@ static void sms_readfile (sms_t * h, char *fn)
 | 
			
		||||
		}
 | 
			
		||||
		while (fgets (line, sizeof (line), s))
 | 
			
		||||
		{								 /* process line in file */
 | 
			
		||||
			char *p;
 | 
			
		||||
			unsigned char *p;
 | 
			
		||||
			for (p = line; *p && *p != '\n' && *p != '\r'; p++);
 | 
			
		||||
			*p = 0;					 /* strip eoln */
 | 
			
		||||
			p = line;
 | 
			
		||||
@@ -1379,8 +1379,8 @@ static int sms_exec (struct ast_channel *chan, void *data)
 | 
			
		||||
		ast_copy_string (h.cli, chan->cid.cid_num, sizeof (h.cli));
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		char *d = data,
 | 
			
		||||
			*p,
 | 
			
		||||
		unsigned char *p;
 | 
			
		||||
		unsigned char *d = data,
 | 
			
		||||
			answer = 0;
 | 
			
		||||
		if (!*d || *d == '|') {
 | 
			
		||||
			ast_log (LOG_ERROR, "Requires queue name\n");
 | 
			
		||||
@@ -1449,7 +1449,7 @@ static int sms_exec (struct ast_channel *chan, void *data)
 | 
			
		||||
			d = p;
 | 
			
		||||
			h.udl = 0;
 | 
			
		||||
			while (*p && h.udl < SMSLEN)
 | 
			
		||||
				h.ud[h.udl++] = utf8decode((unsigned char **)&p);
 | 
			
		||||
				h.ud[h.udl++] = utf8decode(&p);
 | 
			
		||||
			if (is7bit (h.dcs) && packsms7 (0, h.udhl, h.udh, h.udl, h.ud) < 0)
 | 
			
		||||
				ast_log (LOG_WARNING, "Invalid 7 bit GSM data\n");
 | 
			
		||||
			if (is8bit (h.dcs) && packsms8 (0, h.udhl, h.udh, h.udl, h.ud) < 0)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								apps/app_softhangup.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/app_softhangup.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user