[asterisk-commits] rmudgett: branch rmudgett/ss7_27_knk r398141 - in /team/rmudgett/ss7_27_knk: ...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Aug 30 15:05:40 CDT 2013


Author: rmudgett
Date: Fri Aug 30 15:05:37 2013
New Revision: 398141

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=398141
Log:
Reset automerge after conflict.

Added:
    team/rmudgett/ss7_27_knk/UPGRADE-12.txt
      - copied unchanged from r398140, trunk/UPGRADE-12.txt
Modified:
    team/rmudgett/ss7_27_knk/   (props changed)
    team/rmudgett/ss7_27_knk/UPGRADE.txt
    team/rmudgett/ss7_27_knk/channels/chan_sip.c
    team/rmudgett/ss7_27_knk/include/asterisk/sorcery.h
    team/rmudgett/ss7_27_knk/main/config.c
    team/rmudgett/ss7_27_knk/main/config_options.c
    team/rmudgett/ss7_27_knk/main/features_config.c
    team/rmudgett/ss7_27_knk/main/indications.c
    team/rmudgett/ss7_27_knk/main/named_acl.c
    team/rmudgett/ss7_27_knk/main/sorcery.c
    team/rmudgett/ss7_27_knk/main/translate.c
    team/rmudgett/ss7_27_knk/res/res_pjsip.c
    team/rmudgett/ss7_27_knk/res/res_pjsip/config_transport.c
    team/rmudgett/ss7_27_knk/res/res_pjsip_outbound_registration.c
    team/rmudgett/ss7_27_knk/res/res_security_log.c

Propchange: team/rmudgett/ss7_27_knk/
------------------------------------------------------------------------------
    automerge = *

Propchange: team/rmudgett/ss7_27_knk/
------------------------------------------------------------------------------
--- branch-12-merged (original)
+++ branch-12-merged Fri Aug 30 15:05:37 2013
@@ -1,1 +1,1 @@
-/branches/12:1-397989,398002,398016,398020,398023,398025,398062
+/branches/12:1-397989,398002,398016,398020,398023,398025,398062,398068,398100,398116,398139

Propchange: team/rmudgett/ss7_27_knk/
------------------------------------------------------------------------------
--- ss7_27_knk-integrated (original)
+++ ss7_27_knk-integrated Fri Aug 30 15:05:37 2013
@@ -1,1 +1,1 @@
-/trunk:1-398097
+/trunk:1-398140

Modified: team/rmudgett/ss7_27_knk/UPGRADE.txt
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ss7_27_knk/UPGRADE.txt?view=diff&rev=398141&r1=398140&r2=398141
==============================================================================
--- team/rmudgett/ss7_27_knk/UPGRADE.txt (original)
+++ team/rmudgett/ss7_27_knk/UPGRADE.txt Fri Aug 30 15:05:37 2013
@@ -16,398 +16,13 @@
 === UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4
 === UPGRADE-1.6.txt -- Upgrade info for 1.4 to 1.6
 === UPGRADE-1.8.txt -- Upgrade info for 1.6 to 1.8
-=== UPGRADE-10.txt -- Upgrade info for 1.8 to 10
-=== UPGRADE-11.txt -- Upgrade info for 10 to 11
-===
+=== UPGRADE-10.txt  -- Upgrade info for 1.8 to 10
+=== UPGRADE-11.txt  -- Upgrade info for 10 to 11
+=== UPGRADE-12.txt  -- Upgrade info for 11 to 12
 ===========================================================
-
-AgentMonitorOutgoing
- - Application removed.  It was a holdover from when AgentCallbackLogin was
-   removed.
-
-NoCDR:
- - This application is deprecated. Please use the CDR_PROP function instead.
-
-ResetCDR:
- - The 'w' and 'a' options have been removed. Dispatching CDRs to registered
-   backends occurs on an as-needed basis in order to preserve linkedid
-   propagation and other needed behavior.
- - The 'e' option is deprecated. Please use the CDR_PROP function to enable
-   CDRs on a channel that they were previously disabled on.
- - The ResetCDR application is no longer a part of core Asterisk, and instead
-   is now delivered as part of app_cdr.
-
-ForkCDR:
- - ForkCDR no longer automatically resets the forked CDR. See the 'r' option
-   for more information.
- - Variables are no longer purged from the original CDR. See the 'v' option for
-   more information.
- - The 'A' option has been removed. The Answer time on a CDR is never updated
-   once set.
- - The 'd' option has been removed. The disposition on a CDR is a function of
-   the state of the channel and cannot be altered.
- - The 'D' option has been removed. Who the Party B is on a CDR is a function
-   of the state of the respective channels, and cannot be altered.
- - The 'r' option has been changed. Previously, ForkCDR always reset the CDR
-   such that the start time and, if applicable, the answer time was updated.
-   Now, by default, ForkCDR simply forks the CDR, maintaining any times. The
-   'r' option now triggers the Reset, setting the start time (and answer time
-   if applicable) to the current time.
- - The 's' option has been removed. A variable can be set on the original CDR
-   if desired using the CDR function, and removed from a forked CDR using the
-   same function.
- - The 'T' option has been removed. The concept of DONT_TOUCH and LOCKED no
-   longer applies in the CDR engine.
- - The 'v' option now prevents the copy of the variables from the original CDR
-   to the forked CDR. Previously the variables were always copied but were
-   removed from the original. Removing variables from a CDR can have unintended
-   side effects - this option allows the user to prevent propagation of
-   variables from the original to the forked without modifying the original.
-
-AMI:
- - The SIP SIPqualifypeer action now sends a response indicating it will qualify
-   a peer once a peer has been found to qualify.  Once the qualify has been
-   completed it will now issue a SIPqualifypeerdone event.
- - Version 1.4 - The details of what happens to a channel when a masquerade
-   happens (transfers, parking, etc) have changed.
-   - The Masquerade event now includes the Uniqueid's of the clone and original
-     channels.
-   - Channels no longer swap Uniqueid's as a result of the masquerade.
-   - Instead of a shell game of renames, there's now a single rename, appending
-     <ZOMBIE> to the name of the original channel.
- - The AMI events 'ParkedCall', 'ParkedCallTimeOut', 'ParkedCallGiveUp', and
-   'UnParkedCall' have changed significantly in the new res_parking module.
-   - The 'Channel' and 'From' headers are gone. For the channel that was parked
-     or is coming out of parking, a 'Parkee' channel snapshot is issued and it
-     has a number of fields associated with it. The old 'Channel' header relayed
-     the same data as the new 'ParkeeChannel' header.
-   - The 'From' field was ambiguous and changed meaning depending on the event.
-     for most of these, it was the name of the channel that parked the call
-     (the 'Parker'). There is no longer a header that provides this channel name,
-     however the 'ParkerDialString' will contain a dialstring to redial the
-     device that parked the call.
-   - On UnParkedCall events, the 'From' header would instead represent the
-     channel responsible for retrieving the parkee. It receives a channel
-     snapshot labeled 'Retriever'. The 'from' field is is replaced with
-     'RetrieverChannel'.
-   - Lastly, the 'Exten' field has been replaced with 'ParkingSpace'.
-
-CEL:
- - The Uniqueid field for a channel is now a stable identifier, and will not
-   change due to transfers, parking, etc.
-
-Build System:
- - Asterisk now optionally uses libxslt to improve XML documentation generation
-   and maintainability. If libxslt is not available on the system, some XML
-   documentation will be incomplete.
-
-Core:
- - The following channel variables have changed behavior which is described in
-   the CHANGES file: TRANSFER_CONTEXT, BRIDGEPEER, BRIDGEPVTCALLID,
-   ATTENDED_TRANSFER_COMPLETE_SOUND, DYNAMIC_FEATURENAME, and DYNAMIC_PEERNAME.
-
-Queues:
- - Queue logging for PAUSEALL/UNPAUSEALL now only occurs if the interface this is
-   performed on is a member of at least one queue.
- - Queue strategy rrmemory now has a predictable order similar to strategy
-   rrordered. Members will be called in the order that they are added to the
-   queue.
- - CDR behavior in app_queue has been modified slightly.  The CDR record will
-   now only record a disposition of BUSY if all Queue members were actually
-   busy on a call or some Queue members were busy or paused.  Previously, any
-   Queue member being paused would result in a disposition of BUSY.
- - Removed the queues.conf check_state_unknown option.  It is no longer
-   necessary.
- - It is now possible to play the Queue prompts to the first user waiting in a
-   call queue. Note that this may impact the ability for agents to talk with
-   users, as a prompt may still be playing when an agent connects to the user.
-   This ability is disabled by default but can be enabled on an individual
-   queue using the 'announce-to-first-user' option.
-
-Dial:
- - Now recognizes 'W' to pause sending DTMF for one second in addition to
-   the previously existing 'w' that paused sending DTMF for half a second.
-
-ExternalIVR:
- - Now recognizes 'W' to pause sending DTMF for one second in addition to
-   the previously existing 'w' that paused sending DTMF for half a second.
-
-SendDTMF:
- - Now recognizes 'W' to pause sending DTMF for one second in addition to
-   the previously existing 'w' that paused sending DTMF for half a second.
-
-SetAMAFlags
- - This application is deprecated in favor of the CHANNEL function.
-
-chan_agent:
- - The updatecdr option has been removed. Altering the names of channels on a
-   CDR is not supported - the name of the channel is the name of the channel,
-   and pretending otherwise helps no one.
- - The AGENTUPDATECDR channel variable has also been removed, for the same
-   reason as the updatecdr option.
- - chan_agent is removed and replaced with AgentLogin and AgentRequest dialplan
-   applications.  Agents are connected with callers using the new AgentRequest
-   dialplan application.  The Agents:<agent-id> device state is available to
-   monitor the status of an agent.  See agents.conf.sample for valid
-   configuration options.
-
-chan_bridge
- - chan_bridge is removed and its functionality is incorporated into ConfBridge
-   itself.
-
-chan_dahdi:
- - Analog port dialing and deferred DTMF dialing for PRI now distinguishes
-   between 'w' and 'W'.  The 'w' pauses dialing for half a second.  The 'W'
-   pauses dialing for one second.
- - The default for inband_on_proceeding has changed to no.
-
-chan_local:
- - The /b option has been removed.
-
-Dialplan:
- - All channel and global variable names are evaluated in a case-sensitive manner.
-   In previous versions of Asterisk, variables created and evaluated in the
-   dialplan were evaluated case-insensitively, but built-in variables and variable
-   evaluation done internally within Asterisk was done case-sensitively.
- - Asterisk has always had code to ignore dash '-' characters that are not
-   part of a character set in the dialplan extensions.  The code now
-   consistently ignores these characters when matching dialplan extensions.
- - BRIDGE_FEATURES channel variable is now casesensitive for feature letter codes.
-   Uppercase variants apply them to the calling party while lowercase variants
-   apply them to the called party.
-
-Features:
- - The features.conf [applicationmap] <FeatureName>  ActivatedBy option is
-   no longer honored.  The feature is always activated by the channel that has
-   DYNAMIC_FEATURES defined on it when it enters the bridge.  Use predial to set
-   different values of DYNAMIC_FEATURES on the channels
-
- - Executing a dynamic feature on the bridge peer in a multi-party bridge will
-   execute it on all peers of the activating channel.
-
- - There is no longer an explicit 'features reload' CLI command. Features can still be
-   reloaded using 'module reload features'.
-
-
-Parking:
- - The arguments for the Park, ParkedCall, and ParkAndAnnounce applications have
-   been modified significantly. See the application documents for specific details.
-   Also parking lot configuration is now done in res_parking.conf instead of
-   features.conf
-
-From 10 to 11:
-
-Voicemail:
- - All voicemails now have a "msg_id" which uniquely identifies a message. For
-   users of filesystem and IMAP storage of voicemail, this should be transparent.
-   For users of ODBC, you will need to add a "msg_id" column to your voice mail
-   messages table. This should be a string capable of holding at least 32 characters.
-   All messages created in old Asterisk installations will have a msg_id added to
-   them when required. This operation should be transparent as well.
-
-Parking:
- - The comebacktoorigin setting must now be set per parking lot. The setting in
-   the general section will not be applied automatically to each parking lot.
- - The BLINDTRANSFER channel variable is deleted from a channel when it is
-   bridged to prevent subtle bugs in the parking feature.  The channel
-   variable is used by Asterisk internally for the Park application to work
-   properly.  If you were using it for your own purposes, copy it to your
-   own channel variable before the channel is bridged.
-
-res_ais:
- - Users of res_ais in versions of Asterisk prior to Asterisk 11 must change
-   to use the res_corosync module, instead.  OpenAIS is deprecated, but
-   Corosync is still actively developed and maintained.  Corosync came out of
-   the OpenAIS project.
-
-Dialplan Functions:
- - MAILBOX_EXISTS has been deprecated. Use VM_INFO with the 'exists' parameter
-   instead.
- - Macro has been deprecated in favor of GoSub.  For redirecting and connected
-   line purposes use the following variables instead of their macro equivalents:
-   REDIRECTING_SEND_SUB, REDIRECTING_SEND_SUB_ARGS,
-   CONNECTED_LINE_SEND_SUB, CONNECTED_LINE_SEND_SUB_ARGS.
- - The REDIRECTING function now supports the redirecting original party id
-   and reason.
- - The HANGUPCAUSE and HANGUPCAUSE_KEYS functions have been introduced to
-   provide a replacement for the SIP_CAUSE hash. The HangupCauseClear
-   application has also been introduced to remove this data from the channel
-   when necessary.
-
-
-func_enum:
- - ENUM query functions now return a count of -1 on lookup error to
-   differentiate between a failed query and a successful query with 0 results
-   matching the specified type.
-
-CDR:
- - cdr_adaptive_odbc now supports specifying a schema so that Asterisk can
-   connect to databases that use schemas.
-
-Configuration Files:
- - Files listed below have been updated to be more consistent with how Asterisk
-   parses configuration files.  This makes configuration files more consistent
-   with what is expected across modules.
-
-   - cdr.conf: [general] and [csv] sections
-   - dnsmgr.conf
-   - dsp.conf
-
- - The 'verbose' setting in logger.conf now takes an optional argument,
-   specifying the verbosity level for each logging destination.  The default,
-   if not otherwise specified, is a verbosity of 3.
-
-AMI:
-  - DBDelTree now correctly returns an error when 0 rows are deleted just as
-    the DBDel action does.
-  - The IAX2 PeerStatus event now sends a 'Port' header.  In Asterisk 10, this was
-    erroneously being sent as a 'Post' header.
-
-CCSS:
- - Macro is deprecated. Use cc_callback_sub instead of cc_callback_macro
-   in channel configurations.
-
-app_meetme:
-  - The 'c' option (announce user count) will now work even if the 'q' (quiet)
-    option is enabled.
-
-app_followme:
- - Answered outgoing calls no longer get cut off when the next step is started.
-   You now have until the last step times out to decide if you want to accept
-   the call or not before being disconnected.
-
-chan_gtalk:
- - chan_gtalk has been deprecated in favor of the chan_motif channel driver. It is recommended
-   that users switch to using it as it is a core supported module.
-
-chan_jingle:
- - chan_jingle has been deprecated in favor of the chan_motif channel driver. It is recommended
-   that users switch to using it as it is a core supported module.
 
 chan_dahdi:
  - SS7 support now requires libss7 v2.0 or later.
 
-SIP
-===
- - A new option "tonezone" for setting default tonezone for the channel driver
-   or individual devices
- - A new manager event, "SessionTimeout" has been added and is triggered when
-   a call is terminated due to RTP stream inactivity or SIP session timer
-   expiration.
- - SIP_CAUSE is now deprecated.  It has been modified to use the same
-   mechanism as the HANGUPCAUSE function.  Behavior should not change, but
-   performance should be vastly improved.  The HANGUPCAUSE function should now
-   be used instead of SIP_CAUSE. Because of this, the storesipcause option in
-   sip.conf is also deprecated.
- - The sip paramater for Originating Line Information (oli, isup-oli, and
-   ss7-oli) is now parsed out of the From header and copied into the channel's
-   ANI2 information field.  This is readable from the CALLERID(ani2) dialplan
-   function.
- - ICE support has been added and is enabled by default. Some endpoints may have
-   problems with the ICE candidates within the SDP. If this is the case ICE support
-   can be disabled globally or on a per-endpoint basis using the icesupport
-   configuration option. Symptoms of this include one way media or no media flow.
-
-chan_unistim
- - Due to massive update in chan_unistim phone keys functions and on-screen
-   information changed.
-
-users.conf:
- - A defined user with hasvoicemail=yes now finally uses a Gosub to stdexten
-   as documented in extensions.conf.sample since v1.6.0 instead of a Macro as
-   documented in v1.4.  Set the asterisk.conf stdexten=macro parameter to
-   invoke the stdexten the old way.
-
-res_jabber
- - This module has been deprecated in favor of the res_xmpp module. The res_xmpp
-   module is backwards compatible with the res_jabber configuration file, dialplan
-   functions, and AMI actions. The old CLI commands can also be made available using
-   the res_clialiases template for Asterisk 11.
-
-From 1.8 to 10:
-
-cel_pgsql:
- - This module now expects an 'extra' column in the database for data added
-   using the CELGenUserEvent() application.
-
-ConfBridge
- - ConfBridge's dialplan arguments have changed and are not
-   backwards compatible.
-
-File Interpreters
- - The format interpreter formats/format_sln16.c for the file extension
-   '.sln16' has been removed. The '.sln16' file interpreter now exists
-   in the formats/format_sln.c module along with new support for sln12,
-   sln24, sln32, sln44, sln48, sln96, and sln192 file extensions.
-
-HTTP:
- - A bindaddr must be specified in order for the HTTP server
-   to run. Previous versions would default to 0.0.0.0 if no
-   bindaddr was specified.
-
-Gtalk:
- - The default value for 'context' and 'parkinglots' in gtalk.conf has
-   been changed to 'default', previously they were empty.
-
-chan_dahdi:
- - The mohinterpret=passthrough setting is deprecated in favor of
-   moh_signaling=notify.
-
-pbx_lua:
- - Execution no longer continues after applications that do dialplan jumps
-   (such as app.goto).  Now when an application such as app.goto() is called,
-   control is returned back to the pbx engine and the current extension
-   function stops executing.
- - the autoservice now defaults to being on by default
- - autoservice_start() and autoservice_start() no longer return a value.
-
-Queue:
- - Mark QUEUE_MEMBER_PENALTY Deprecated it never worked for realtime members
- - QUEUE_MEMBER is now R/W supporting setting paused, ignorebusy and penalty.
-
-Asterisk Database:
- - The internal Asterisk database has been switched from Berkeley DB 1.86 to
-   SQLite 3. An existing Berkeley astdb file can be converted with the astdb2sqlite3
-   utility in the UTILS section of menuselect. If an existing astdb is found and no
-   astdb.sqlite3 exists, astdb2sqlite3 will be compiled automatically. Asterisk will
-   convert an existing astdb to the SQLite3 version automatically at runtime. If
-   moving back from Asterisk 10 to Asterisk 1.8, the astdb2bdb utility can be used
-   to create a Berkeley DB copy of the SQLite3 astdb that Asterisk 10 uses.
-
-Manager:
- - The AMI protocol version was incremented to 1.2 as a result of changing two
-   instances of the Unlink event to Bridge events. This change was documented
-   as part of the AMI 1.1 update, but two Unlink events were inadvertently left
-   unchanged.
-
-Module Support Level
- - All modules in the addons, apps, bridge, cdr, cel, channels, codecs,
-   formats, funcs, pbx, and res have been updated to include MODULEINFO data
-   that includes <support_level> tags with a value of core, extended, or deprecated.
-   More information is available on the Asterisk wiki at
-   https://wiki.asterisk.org/wiki/display/AST/Asterisk+Module+Support+States
-
-   Deprecated modules are now marked to not build by default and must be explicitly
-   enabled in menuselect.
-
-chan_sip:
- - Setting of HASH(SIP_CAUSE,<slave-channel-name>) on channels is now disabled
-   by default. It can be enabled using the 'storesipcause' option. This feature
-   has a significant performance penalty.
- - In order to improve compliance with RFC 3261, SIP usernames are now properly
-   escaped when encoding reserved characters. Prior to this change, the use of
-   these characters in certain SIP settings affecting usernames could cause
-   injections of these characters in their raw form into SIP headers which could
-   in turn cause all sorts of nasty behaviors. All characters that are not
-   alphanumeric or are not contained in the the following lists specified by
-   RFC 3261 section 25.1 will be escaped as %XX when encoding a SIP username:
-    * mark: "-" / "_" / "." / "!" / "~" / "*" / "'" / "(" / ")"
-    * user-unreserved: "&" / "=" / "+" / "$" / "," / ";" / "?" / "/"
-
-UDPTL:
- - The default UDPTL port range in udptl.conf.sample differed from the defaults
-   in the source. If you didn't have a config file, you got 4500 to 4599. Now the
-   default is 4000 to 4999.
-
 ===========================================================
 ===========================================================

Modified: team/rmudgett/ss7_27_knk/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ss7_27_knk/channels/chan_sip.c?view=diff&rev=398141&r1=398140&r2=398141
==============================================================================
--- team/rmudgett/ss7_27_knk/channels/chan_sip.c (original)
+++ team/rmudgett/ss7_27_knk/channels/chan_sip.c Fri Aug 30 15:05:37 2013
@@ -34662,7 +34662,12 @@
 
 	clear_sip_domains();
 	sip_cfg.contact_acl = ast_free_acl_list(sip_cfg.contact_acl);
+	if (sipsock_read_id) {
+		ast_io_remove(io, sipsock_read_id);
+		sipsock_read_id = NULL;
+	}
 	close(sipsock);
+	io_context_destroy(io);
 	ast_sched_context_destroy(sched);
 	con = ast_context_find(used_context);
 	if (con) {
@@ -34675,6 +34680,11 @@
 
 	sip_reqresp_parser_exit();
 	sip_unregister_tests();
+
+	if (notify_types) {
+		ast_config_destroy(notify_types);
+		notify_types = NULL;
+	}
 
 	ast_format_cap_destroy(sip_tech.capabilities);
 	sip_cfg.caps = ast_format_cap_destroy(sip_cfg.caps);

Modified: team/rmudgett/ss7_27_knk/include/asterisk/sorcery.h
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ss7_27_knk/include/asterisk/sorcery.h?view=diff&rev=398141&r1=398140&r2=398141
==============================================================================
--- team/rmudgett/ss7_27_knk/include/asterisk/sorcery.h (original)
+++ team/rmudgett/ss7_27_knk/include/asterisk/sorcery.h Fri Aug 30 15:05:37 2013
@@ -356,7 +356,7 @@
  * \retval 0 success
  * \retval -1 failure
  */
-int __ast_sorcery_object_register(struct ast_sorcery *sorcery, const char *type, unsigned int hidden, aco_type_item_alloc alloc, sorcery_transform_handler transform, sorcery_apply_handler apply);
+int __ast_sorcery_object_register(struct ast_sorcery *sorcery, const char *type, unsigned int hidden, unsigned int reloadable, aco_type_item_alloc alloc, sorcery_transform_handler transform, sorcery_apply_handler apply);
 
 /*!
  * \brief Register an object type
@@ -371,10 +371,10 @@
  * \retval -1 failure
  */
 #define ast_sorcery_object_register(sorcery, type, alloc, transform, apply) \
-	__ast_sorcery_object_register((sorcery), (type), 0, (alloc), (transform), (apply))
-
-/*!
- * \brief Register an internal, hidden object type
+	__ast_sorcery_object_register((sorcery), (type), 0, 1, (alloc), (transform), (apply))
+
+/*!
+ * \brief Register an object type that is not reloadable
  *
  * \param sorcery Pointer to a sorcery structure
  * \param type Type of object
@@ -385,8 +385,23 @@
  * \retval 0 success
  * \retval -1 failure
  */
+#define ast_sorcery_object_register_no_reload(sorcery, type, alloc, transform, apply) \
+	__ast_sorcery_object_register((sorcery), (type), 0, 0, (alloc), (transform), (apply))
+
+/*!
+ * \brief Register an internal, hidden object type
+ *
+ * \param sorcery Pointer to a sorcery structure
+ * \param type Type of object
+ * \param alloc Required object allocation callback
+ * \param transform Optional transformation callback
+ * \param apply Optional object set apply callback
+ *
+ * \retval 0 success
+ * \retval -1 failure
+ */
 #define ast_sorcery_internal_object_register(sorcery, type, alloc, transform, apply) \
-	__ast_sorcery_object_register((sorcery), (type), 1, (alloc), (transform), (apply))
+	__ast_sorcery_object_register((sorcery), (type), 1, 1, (alloc), (transform), (apply))
 
 /*!
  * \brief Set the copy handler for an object type

Modified: team/rmudgett/ss7_27_knk/main/config.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ss7_27_knk/main/config.c?view=diff&rev=398141&r1=398140&r2=398141
==============================================================================
--- team/rmudgett/ss7_27_knk/main/config.c (original)
+++ team/rmudgett/ss7_27_knk/main/config.c Fri Aug 30 15:05:37 2013
@@ -3248,6 +3248,10 @@
 
 	AST_LIST_LOCK(&cfmtime_head);
 	while ((cfmtime = AST_LIST_REMOVE_HEAD(&cfmtime_head, list))) {
+		struct cache_file_include *cfinclude;
+		while ((cfinclude = AST_LIST_REMOVE_HEAD(&cfmtime->includes, list))) {
+			ast_free(cfinclude);
+		}
 		ast_free(cfmtime);
 	}
 	AST_LIST_UNLOCK(&cfmtime_head);

Modified: team/rmudgett/ss7_27_knk/main/config_options.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ss7_27_knk/main/config_options.c?view=diff&rev=398141&r1=398140&r2=398141
==============================================================================
--- team/rmudgett/ss7_27_knk/main/config_options.c (original)
+++ team/rmudgett/ss7_27_knk/main/config_options.c Fri Aug 30 15:05:37 2013
@@ -473,7 +473,7 @@
 
 	field = info->internal->pending + type->item_offset;
 	if (!*field) {
-		ast_log(LOG_ERROR, "No object to update!\n");
+		ast_log(LOG_ERROR, "In %s: %s - No object to update!\n", file->filename, cat);
 		return -1;
 	}
 

Modified: team/rmudgett/ss7_27_knk/main/features_config.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ss7_27_knk/main/features_config.c?view=diff&rev=398141&r1=398140&r2=398141
==============================================================================
--- team/rmudgett/ss7_27_knk/main/features_config.c (original)
+++ team/rmudgett/ss7_27_knk/main/features_config.c Fri Aug 30 15:05:37 2013
@@ -180,7 +180,7 @@
 						format for the recording is determined by the <replaceable>TOUCH_MONITOR_FORMAT</replaceable>
 						channel variable. If this variable is not specified, then <literal>wav</literal> is the
 						default. The filename is constructed in the following manner:</para>
-							
+
 						<para>    prefix-timestamp-filename</para>
 
 						<para>where prefix is either the value of the <replaceable>TOUCH_MONITOR_PREFIX</replaceable>
@@ -547,9 +547,15 @@
 	return group;
 }
 
+/* Used for deprecated parking configuration */
+struct dummy_config {
+	char dummy;
+};
+
 struct features_config {
 	struct features_global_config *global;
 	struct ast_featuremap_config *featuremap;
+	struct dummy_config *parkinglots;
 	struct ao2_container *applicationmap;
 	struct ao2_container *featuregroups;
 };
@@ -588,14 +594,24 @@
 	.item_find = featuregroup_find,
 };
 
+static struct aco_type parkinglot_option = {
+	.type = ACO_GLOBAL,
+	.name = "parkinglot",
+	.category_match = ACO_WHITELIST,
+	.category = "^parkinglot_.*$",
+	.item_offset = offsetof(struct features_config, parkinglots),
+	.hidden = 1,
+};
+
 static struct aco_type *global_options[] = ACO_TYPES(&global_option);
 static struct aco_type *featuremap_options[] = ACO_TYPES(&featuremap_option);
 static struct aco_type *applicationmap_options[] = ACO_TYPES(&applicationmap_option);
 static struct aco_type *featuregroup_options[] = ACO_TYPES(&featuregroup_option);
+static struct aco_type *parkinglot_options[] = ACO_TYPES(&parkinglot_option);
 
 static struct aco_file features_conf = {
 	.filename = "features.conf",
-	.types = ACO_TYPES(&global_option, &featuremap_option, &applicationmap_option, &featuregroup_option),
+	.types = ACO_TYPES(&global_option, &featuremap_option, &applicationmap_option, &featuregroup_option, &parkinglot_option),
 };
 
 AO2_GLOBAL_OBJ_STATIC(globals);
@@ -711,6 +727,11 @@
 
 	cfg->featuremap = ao2_alloc(sizeof(*cfg->featuremap), featuremap_config_destructor);
 	if (!cfg->featuremap || ast_string_field_init(cfg->featuremap, 32)) {
+		return NULL;
+	}
+
+	cfg->parkinglots = ao2_alloc(sizeof(*cfg->parkinglots), NULL);
+	if (!cfg->parkinglots) {
 		return NULL;
 	}
 
@@ -1433,9 +1454,15 @@
 	return pickup_set(pickup, var->name, var->value);
 }
 
+static int parking_warning = 0;
 static int unsupported_handler(const struct aco_option *opt,
 		struct ast_variable *var, void *obj)
 {
+	if (!parking_warning) {
+		ast_log(LOG_WARNING, "Parkinglots are no longer configurable in features.conf; "
+			"parking is now handled by res_parking.conf\n");
+		parking_warning = 1;
+	}
 	ast_log(LOG_WARNING, "The option '%s' is no longer configurable in features.conf.\n", var->name);
 	return 0;
 }
@@ -1708,6 +1735,9 @@
 	aco_option_register_custom(&cfg_info, "^.*$", ACO_REGEX, featuregroup_options,
 			"", featuregroup_handler, 0);
 
+	aco_option_register_custom_nodoc(&cfg_info, "^.*$", ACO_REGEX, parkinglot_options,
+			"", unsupported_handler, 0);
+
 	if (aco_process_config(&cfg_info, 0) == ACO_PROCESS_ERROR) {
 		RAII_VAR(struct features_config *, features_cfg, __features_config_alloc(0), ao2_cleanup);
 

Modified: team/rmudgett/ss7_27_knk/main/indications.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ss7_27_knk/main/indications.c?view=diff&rev=398141&r1=398140&r2=398141
==============================================================================
--- team/rmudgett/ss7_27_knk/main/indications.c (original)
+++ team/rmudgett/ss7_27_knk/main/indications.c Fri Aug 30 15:05:37 2013
@@ -499,6 +499,9 @@
 
 	ast_tone_zone_unlock(zone);
 
+	if (!_zone)
+		zone = ast_tone_zone_unref(zone);
+
 	return ts;
 }
 

Modified: team/rmudgett/ss7_27_knk/main/named_acl.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ss7_27_knk/main/named_acl.c?view=diff&rev=398141&r1=398140&r2=398141
==============================================================================
--- team/rmudgett/ss7_27_knk/main/named_acl.c (original)
+++ team/rmudgett/ss7_27_knk/main/named_acl.c Fri Aug 30 15:05:37 2013
@@ -567,6 +567,8 @@
 
 static void named_acl_cleanup(void)
 {
+	ast_cli_unregister_multiple(cli_named_acl, ARRAY_LEN(cli_named_acl));
+
 	STASIS_MESSAGE_TYPE_CLEANUP(ast_named_acl_change_type);
 	aco_info_destroy(&cfg_info);
 	ao2_global_obj_release(globals);

Modified: team/rmudgett/ss7_27_knk/main/sorcery.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ss7_27_knk/main/sorcery.c?view=diff&rev=398141&r1=398140&r2=398141
==============================================================================
--- team/rmudgett/ss7_27_knk/main/sorcery.c (original)
+++ team/rmudgett/ss7_27_knk/main/sorcery.c Fri Aug 30 15:05:37 2013
@@ -110,6 +110,9 @@
 
 	/*! \brief Serializer for observers */
 	struct ast_taskprocessor *serializer;
+
+	/*! \brief Specifies if object type is reloadable or not */
+	unsigned int reloadable:1;
 };
 
 /*! \brief Structure for registered object type observer */
@@ -575,7 +578,7 @@
 	return 0;
 }
 
-int __ast_sorcery_object_register(struct ast_sorcery *sorcery, const char *type, unsigned int hidden, aco_type_item_alloc alloc, sorcery_transform_handler transform, sorcery_apply_handler apply)
+int __ast_sorcery_object_register(struct ast_sorcery *sorcery, const char *type, unsigned int hidden, unsigned int reloadable, aco_type_item_alloc alloc, sorcery_transform_handler transform, sorcery_apply_handler apply)
 {
 	RAII_VAR(struct ast_sorcery_object_type *, object_type, ao2_find(sorcery->types, type, OBJ_KEY), ao2_cleanup);
 
@@ -589,6 +592,7 @@
 	object_type->type.item_alloc = alloc;
 	object_type->type.hidden = hidden;
 
+	object_type->reloadable = reloadable;
 	object_type->transform = transform;
 	object_type->apply = apply;
 	object_type->file->types[0] = &object_type->type;
@@ -695,11 +699,25 @@
 	return 0;
 }
 
+/*! \brief Retrieves whether or not the type is reloadable */
+static int sorcery_reloadable(const struct ast_sorcery *sorcery, const char *type)
+{
+	RAII_VAR(struct ast_sorcery_object_type *, object_type,
+		 ao2_find(sorcery->types, type, OBJ_KEY), ao2_cleanup);
+	return object_type && object_type->reloadable;
+}
+
 static int sorcery_wizard_load(void *obj, void *arg, int flags)
 {
 	struct ast_sorcery_object_wizard *wizard = obj;
 	struct sorcery_load_details *details = arg;
 	void (*load)(void *data, const struct ast_sorcery *sorcery, const char *type);
+
+	if (details->reload && !sorcery_reloadable(details->sorcery, details->type)) {
+		ast_log(LOG_NOTICE, "Type '%s' is not reloadable, "
+			"maintaining previous values\n", details->type);
+		return 0;
+	}
 
 	load = !details->reload ? wizard->wizard->load : wizard->wizard->reload;
 

Modified: team/rmudgett/ss7_27_knk/main/translate.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ss7_27_knk/main/translate.c?view=diff&rev=398141&r1=398140&r2=398141
==============================================================================
--- team/rmudgett/ss7_27_knk/main/translate.c (original)
+++ team/rmudgett/ss7_27_knk/main/translate.c Fri Aug 30 15:05:37 2013
@@ -1396,11 +1396,27 @@
 	ast_format_cap_iter_end(src);
 }
 
+static void translate_shutdown(void)
+{
+	int x;
+	ast_cli_unregister_multiple(cli_translate, ARRAY_LEN(cli_translate));
+
+	ast_rwlock_wrlock(&tablelock);
+	for (x = 0; x < index_size; x++) {
+		ast_free(__matrix[x]);
+	}
+	ast_free(__matrix);
+	ast_free(__indextable);
+	ast_rwlock_unlock(&tablelock);
+	ast_rwlock_destroy(&tablelock);
+}
+
 int ast_translate_init(void)
 {
 	int res = 0;
 	ast_rwlock_init(&tablelock);
 	res = matrix_resize(1);
 	res |= ast_cli_register_multiple(cli_translate, ARRAY_LEN(cli_translate));
+	ast_register_atexit(translate_shutdown);
 	return res;
 }

Modified: team/rmudgett/ss7_27_knk/res/res_pjsip.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ss7_27_knk/res/res_pjsip.c?view=diff&rev=398141&r1=398140&r2=398141
==============================================================================
--- team/rmudgett/ss7_27_knk/res/res_pjsip.c (original)
+++ team/rmudgett/ss7_27_knk/res/res_pjsip.c Fri Aug 30 15:05:37 2013
@@ -1290,6 +1290,8 @@
 	transport = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "transport", transport_name);
 
 	if (!transport || !transport->state) {
+		ast_log(LOG_ERROR, "Unable to retrieve PJSIP transport '%s' for endpoint '%s'\n",
+			transport_name, ast_sorcery_object_get_id(endpoint));
 		return -1;
 	}
 

Modified: team/rmudgett/ss7_27_knk/res/res_pjsip/config_transport.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ss7_27_knk/res/res_pjsip/config_transport.c?view=diff&rev=398141&r1=398140&r2=398141
==============================================================================
--- team/rmudgett/ss7_27_knk/res/res_pjsip/config_transport.c (original)
+++ team/rmudgett/ss7_27_knk/res/res_pjsip/config_transport.c Fri Aug 30 15:05:37 2013
@@ -309,7 +309,7 @@
 {
 	ast_sorcery_apply_default(sorcery, "transport", "config", "pjsip.conf,criteria=type=transport");
 
-	if (ast_sorcery_object_register(sorcery, "transport", transport_alloc, NULL, transport_apply)) {
+	if (ast_sorcery_object_register_no_reload(sorcery, "transport", transport_alloc, NULL, transport_apply)) {
 		return -1;
 	}
 

Modified: team/rmudgett/ss7_27_knk/res/res_pjsip_outbound_registration.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ss7_27_knk/res/res_pjsip_outbound_registration.c?view=diff&rev=398141&r1=398140&r2=398141
==============================================================================
--- team/rmudgett/ss7_27_knk/res/res_pjsip_outbound_registration.c (original)
+++ team/rmudgett/ss7_27_knk/res/res_pjsip_outbound_registration.c Fri Aug 30 15:05:37 2013
@@ -602,6 +602,8 @@
 		RAII_VAR(struct ast_sip_transport *, transport, ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "transport", registration->transport), ao2_cleanup);
 
 		if (!transport || !transport->state) {
+			ast_log(LOG_ERROR, "Unable to retrieve PJSIP transport '%s' "
+				" for outbound registration", registration->transport);
 			return -1;
 		}
 

Modified: team/rmudgett/ss7_27_knk/res/res_security_log.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ss7_27_knk/res/res_security_log.c?view=diff&rev=398141&r1=398140&r2=398141
==============================================================================
--- team/rmudgett/ss7_27_knk/res/res_security_log.c (original)
+++ team/rmudgett/ss7_27_knk/res/res_security_log.c Fri Aug 30 15:05:37 2013
@@ -155,6 +155,8 @@
 		security_stasis_sub = stasis_unsubscribe(security_stasis_sub);
 	}
 
+	ast_logger_unregister_level(LOG_SECURITY_NAME);
+
 	ast_verb(3, "Security Logging Disabled\n");
 
 	return 0;




More information about the asterisk-commits mailing list