<html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <base href="https://wiki.asterisk.org/wiki" />
        <style type="text/css">
    body, #email-content, #email-content-inner { font-family: Arial,FreeSans,Helvetica,sans-serif; }
    body, p, blockquote, pre, code, td, th, li, dt, dd { font-size: 13px; }
    small { font-size: 11px; }

    body { width:100% !important; -webkit-font-smoothing: antialiased; }

    body,
    #email-wrapper { background-color: #f0f0f0; }
    #email-wrapper-inner { padding: 20px; text-align: center; }
    #email-content-inner { background-color: #fff; border: 1px solid #bbb; color: $menuTxtColour; padding:20px; text-align:left; }
    #email-wrapper-inner > table { width: 100%; }
    #email-wrapper-inner.thin > table { margin: 0 auto; width: 50%; }
    #email-footer { padding: 0 16px 32px 16px; margin: 0; }

    .email-indent { margin: 8px 0 16px 0; }
    .email-comment { margin: 0 0 0 56px; }
    .email-comment.removed { background-color: #ffe7e7; border: 1px solid #df9898; padding: 0 8px;}

    #email-title-avatar { text-align: left; vertical-align: top; width: 48px; padding-right: 8px; }
    #email-title-flavor { margin: 0; padding: 0 0 4px 0; }
    #email-title-heading { font-size: 16px; line-height: 20px; min-height: 20px; margin: 0; padding: 0; }
    #email-title .icon { border: 0; padding: 0 5px 0 0; text-align: left; vertical-align: middle; }

    #email-actions { border-top: 1px solid #bbb; color: #505050; margin: 8px 0 0 0; padding: 0; }
    #email-actions td { padding-top: 8px; }
    #email-actions .left { max-width: 45%; text-align: left; }
    #email-actions .right { text-align: right; }
    .email-reply-divider { border-top: 1px solid #bbb; color: #505050; margin: 32px 0 8px 0; padding: 8px 0; }
    .email-section-title { border-bottom: 1px solid #bbb; margin: 8px 0; padding: 8px 0 0 0; }

    .email-metadata { color: #505050; }

    a { color: #326ca6; text-decoration: none; }
    a:hover { color: #336ca6; text-decoration: underline; }
    a:active {color: #326ca6; }

    a.email-footer-link { color: #505050; font-size: 11px; }

    .email-item-list { list-style: none; margin: 4px 0; padding-left: 0; }
    .email-item-list li { list-style: none; margin: 0; padding: 4px 0; }
    .email-list-divider { color: #505050; padding: 0 0.35em; }
    .email-operation-icon { padding-right: 5px; }

    .avatar { -ms-interpolation-mode: bicubic; border-radius: 3px;}
    .avatar-link { margin: 2px; }

    .tableview th { border-bottom: 1px solid #69C; font-weight: bold; text-align: left; }
    .tableview td { border-bottom: 1px solid #bbbbbb; text-align: left; padding: 4px 16px 4px 0; }

    .aui-message {  margin: 1em 0; padding: 8px; }
    .aui-message.info { background-color: #e0f0ff; border: 1px solid #9eb6d4; }
    .aui-message.success { background-color: #ddfade; border: 1px solid #93c49f; }
    .aui-message.error,
    .aui-message.removed { background-color: #ffe7e7; border: 1px solid #df9898; color: #000; }

    .call-to-action-table { margin: 10px 1px 1px 1px;}
    .call-to-cancel-container, .call-to-action-container { padding: 5px 20px; }
    .call-to-cancel-container { border: 1px solid #aaa; background-color: #eee; border-radius: 3px; }
    .call-to-cancel-container a.call-to-cancel-button { background-color: #eee; font-size: 14px; line-height: 1; padding: 0; margin: 0; color: #666; font-family: sans-serif;}
    .call-to-action-container { border: 1px solid #486582;  background-color: #3068A2; border-radius: 3px; padding: 4px 10px; }
    .call-to-action-container a.call-to-action-button { background-color: #3068A2; font-size: 14px; line-height: 1; padding: 0; margin: 0; color: #fff; font-weight: bold; font-family: sans-serif; }

    /** The span around the inline task checkbox image */
    .diff-inline-task-overlay {
        display: inline-block;
        text-align: center;
        height: 1.5em;
        padding: 5px 0px 1px 5px;
        margin-right: 5px;
        /** Unfortunately, the negative margin-left is stripped out in gmail */
        margin-left: -5px;
    }

            @media handheld, only screen and (max-device-width: 480px) {
        div, a, p, td, th, li, dt, dd { -webkit-text-size-adjust: auto; }
        small, small a { -webkit-text-size-adjust: 90%; }

        td[id=email-wrapper-inner] { padding: 2px !important; }
        td[id=email-content-inner] { padding: 8px !important; }
        td[id="email-wrapper-inner"][class="thin"] > table { text-align: left !important; width: 100% !important; }
        td[id=email-footer] { padding: 8px 12px !important; }
        div[class=email-indent] { margin: 8px 0px !important; }
        div[class=email-comment] { margin: 0 !important; }

        p[id=email-title-flavor] a { display: block; } /* puts the username and the action on separate lines */
        p[id=email-permalink] { padding: 4px 0 0 0 !important; }

        table[id=email-actions] td { padding-top: 0 !important; }
        table[id=email-actions] td.right { text-align: right !important; }
        table[id=email-actions] .email-list-item { display: block; margin: 1em 0 !important; word-wrap: normal !important; }
        span[class=email-list-divider] { display: none; }
    }



        </style>
    </head>
    <body style="font-family: Arial, FreeSans, Helvetica, sans-serif; font-size: 13px; width: 100%; -webkit-font-smoothing: antialiased; background-color: #f0f0f0">
        <table id="email-wrapper" width="100%" cellspacing="0" cellpadding="0" border="0" style="background-color: #f0f0f0">
            <tbody>
                <tr valign="middle">
                    <td id="email-wrapper-inner" style="font-size: 13px; padding: 20px; text-align: center">
                        <table id="email-content" cellspacing="0" cellpadding="0" border="0" style="font-family: Arial, FreeSans, Helvetica, sans-serif; width: 100%">
                            <tbody>
                                <tr valign="top">
                                    <td id="email-content-inner" align="left" style="font-family: Arial, FreeSans, Helvetica, sans-serif; font-size: 13px; background-color: #fff; border: 1px solid #bbb; padding: 20px; text-align: left">
                                        <table id="email-title" cellpadding="0" cellspacing="0" border="0" width="100%">
                                            <tbody>
                                                <tr>
                                                    <td id="email-title-avatar" rowspan="2" style="font-size: 13px; text-align: left; vertical-align: top; width: 48px; padding-right: 8px"> <img class="avatar" src="cid:avatar_ce51dcf276530e4a4b00548e2a6d0905" border="0" height="48" width="48" style="-ms-interpolation-mode: bicubic; border-radius: 3px" /> </td>
                                                    <td valign="top" style="font-size: 13px">
                                                        <div id="email-title-flavor" class="email-metadata" style="margin: 0; padding: 0 0 4px 0; color: #505050">
                                                            <a href="    https://wiki.asterisk.org/wiki/display/~mjordan " style="color:#326ca6;text-decoration:none;; color: #326ca6; text-decoration: none">Matt Jordan</a> edited the page:
                                                        </div> </td>
                                                </tr>
                                                <tr>
                                                    <td valign="top" style="font-size: 13px"> <h2 id="email-title-heading" style="font-size: 16px; line-height: 20px; min-height: 20px; margin: 0; padding: 0"> <a href="https://wiki.asterisk.org/wiki/display/AST/Code+Review+Checklist" style="color: #326ca6; text-decoration: none"> <img class="icon" src="cid:page-icon" alt="" style="border: 0; padding: 0 5px 0 0; text-align: left; vertical-align: middle" /> <strong style="font-size:16px;line-height:20px;vertical-align:top;">Code Review Checklist</strong> </a> </h2> </td>
                                                </tr>
                                            </tbody>
                                        </table>
                                        <div class="email-indent" style="margin: 8px 0 16px 0">
                                            <div class="email-diff">
                                                <div id="page-diffs" class="wiki-content">
                                                    <p class="diff-context-placeholder" style="font-size: 13px">...</p>
                                                    <p class="diff-block-context" style="font-size: 13px">Egregious and flagrant disregard for the coding guidelines will result in your submission being rejected outright.</p>
                                                    <h2 id="CodeReviewChecklist-Design" class="diff-block-target diff-block-context"> <span class="diff-html-added" id="added-diff-0" style="font-size: 100%; background-color: #ddfade;">Design</span> </h2>
                                                    <h3 id="CodeReviewChecklist-StructureandLayout" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Structure and Layout</span> </h3>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Can the code changes be placed into a separate module?</span>
                                                            <ul>
                                                                <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">If not, can the code be placed into a separate file?</span> </li>
                                                            </ul> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are functions short, and do they have only a single purpose?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Can any code be refactored into other functions to reduce complexity?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Can any code be refactored to reduce duplication?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Can the code be refactored to lend itself to unit testing?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Can any data structures be made opaque?</span> </li>
                                                    </ul>
                                                    <h3 id="CodeReviewChecklist-Naming" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Naming</span> </h3>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <p style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Do function names follow the </span><a class="confluence-link unresolved" href="#" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Coding Guidelines</span></a><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">?</span> </p>
                                                            <ul>
                                                                <li style="font-size: 13px"> <p style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Public functions prefixed with a namespace, i.e., </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ast_</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">, </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">stasis_</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">, </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">pbx_</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">, etc.</span> </p> </li>
                                                                <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Do they follow - when possible - the scheme </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">namespace_object_verb_noun</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">?</span> </li>
                                                            </ul> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are variable names descriptive?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are global variables used?</span>
                                                            <ul>
                                                                <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Can they be removed and replaced with an </span><a href="http://doxygen.asterisk.org/trunk/d2/dd8/structao2__global__obj.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ao2_global_obj</span></a><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">?</span> </li>
                                                            </ul> </li>
                                                    </ul>
                                                    <h3 id="CodeReviewChecklist-Interfaces" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Interfaces</span> </h3>
                                                    <h4 id="CodeReviewChecklist-DialplanApplications" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Dialplan Applications</span> </h4>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Does the functionality have read/write semantics? If so, does a dialplan function make more sense?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are all options parsed using the application parsing routines, validated, and documented?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Is there a routine result that should be returned via a channel variable?</span> </li>
                                                    </ul>
                                                    <h4 id="CodeReviewChecklist-DialplanFunctions" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Dialplan Functions</span> </h4>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Does the function have system altering capabilities? Should it be registered as 'dangerous'?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Does the function have no side effects when being read?</span> </li>
                                                    </ul>
                                                    <h4 id="CodeReviewChecklist-CLI" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">CLI</span> </h4>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Does the CLI command have tab completion support?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Does the functionality make more sense as an AMI action?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Is the text returned formatted to fit on a variety of screen widths?</span> </li>
                                                    </ul>
                                                    <h4 id="CodeReviewChecklist-AMI" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">AMI</span> </h4>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are all actions and events documented?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Does the action have a long expected execution time? Should the action dispatch itself asynchronously?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Do the events make use of object snapshots appropriately? Can the Stasis cache be used to retrieve a related object?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Do events need to be synchronized through Stasis?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Is there an existing event that already conveys similar information?</span> </li>
                                                    </ul>
                                                    <h4 id="CodeReviewChecklist-ARI" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ARI</span> </h4>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Is the HTTP verb choice appropriate?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are names chosen appropriately for all resources and query parameters?</span> </li>
                                                    </ul>
                                                    <h2 id="CodeReviewChecklist-Documentation" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Documentation</span> </h2>
                                                    <h4 id="CodeReviewChecklist-Code" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Code</span> </h4>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Do comments in the code explain why something is being done, as opposed to how it is being done?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">If a comment is explaining what or how it is being done, can the code be refactored to be more clear?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Is a comment explaining the purpose of something indicative of a design flaw?</span> </li>
                                                    </ul>
                                                    <h4 id="CodeReviewChecklist-Doxygen" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Doxygen</span> </h4>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are all public functions and data structures documented?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are internal functions marked as \internal, and do they have appropriate summaries?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Should the public functions/data structures be grouped together into logical groupings?</span> </li>
                                                    </ul>
                                                    <h4 id="CodeReviewChecklist-UserDocumentation" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">User Documentation</span> </h4>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">If the change may affect an existing system, is the UPGRADE file updated?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">If the change is a new feature, is the CHANGES file updated?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are all new configuration parameters documented in XML documentation and in the sample configuration file?</span>
                                                            <ul>
                                                                <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Do any of the realtime database schemas need to be updated?</span> </li>
                                                            </ul> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are all dialplan functions/applications/AMI actions & events/AGI actions/ARI resources documented?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Does any wiki documentation need to be updated/written?</span> </li>
                                                    </ul>
                                                    <h2 id="CodeReviewChecklist-FrameworkandAPIUsage" class="diff-block-context">Framework and API Usage</h2>
                                                    <p class="diff-block-context" style="font-size: 13px">Asterisk contains many frameworks. When possible, you should always strive to use the tools available and not re-invent your own. The following are some of the common frameworks in Asterisk, their purpose, and what they should be used for. Code should be reviewed for proper use of the appropriate frameworks.</p>
                                                    <p class="diff-context-placeholder" style="font-size: 13px">...</p>
                                                    <div class="table-wrap diff-block-target diff-block-context">
                                                        <table class="confluenceTable" style="border-collapse: collapse; border: 1px solid #ddd;">
                                                            <tbody>
                                                                <tr>
                                                                    <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Framework</th>
                                                                    <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Principle Location</th>
                                                                    <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Usage</th>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">AstObj2</td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/d5/da5/astobj2_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none">astobj2.h</a></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Provides reference counted objects, including reference counted containers (hash table, red/black tree, list, single object). Probably the most heavily used API in Asterisk. Any object whose lifetime is affected by module reloads, who is shared between threads, or is generally complex should use this API.</td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" id="added-diff-1" style="font-size: 100%; background-color: #ddfade;">Audiohooks</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/d0/d79/audiohook_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">audiohook.h</span></a></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">A special type of frame hook used to intercept and manipulate audio frames.</span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Bridging</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/d4/d56/bridge_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">bridge.h</span></a></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">A framework for bridging channels together.</span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Configuration Framework</td>
                                                                    <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/db/dfe/config__options_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none">config_options.h</a></td>
                                                                    <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">A framework that manages and wraps a variety of static configuration APIs, including handling <code style="font-size: 13px">.conf</code> files and static realtime. The framework provides thread safety, type safety, CLI/wiki documentation integration, and enforces schema consistency across Asterisk. For an example of using the framework, see <a class="confluence-link unresolved" href="#" style="color: #326ca6; text-decoration: none">Using the Configuration Framework</a>. If you need support for dynamic realtime, see the Sorcery framework.</td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" id="removed-diff-0" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;">Sorcery</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;">Scheduler</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;">Threading</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;">Task Processors</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;">Vectors</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;">Linked Lists</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;">Dialing</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;">Bridging</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;">Stasis</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span></td>
                                                                </tr>
                                                            </tbody>
                                                        </table>
                                                    </div>
                                                    <p class="diff-block-target diff-block-context" style="font-size: 13px"> <span class="diff-html-removed" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;"> </span> </p>
                                                    <div class="table-wrap diff-block-target diff-block-context">
                                                        <table class="confluenceTable" style="border-collapse: collapse; border: 1px solid #ddd;">
                                                            <tbody>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" id="added-diff-2" style="font-size: 100%; background-color: #ddfade;">Datastores</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/d9/db6/datastore_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">datastore.h</span></a></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">API for storing generic information on a channel.</span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Dialling</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/df/dcf/dial_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">dial.h</span></a></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">A framework for performing outbound dialling operations.</span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Framehooks</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/db/d3c/framehook_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">framehook.h</span></a></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">An API for intercepting and manipulating frames on a channel.</span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Linked Lists</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/d0/d43/dlinkedlists_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">dlinkedlists.h</span></a><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> </span><a href="http://doxygen.asterisk.org/trunk/df/d90/linkedlists_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">linkedlists.h</span></a></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Single and doubly linked lists. These are of particular use when used as members of structs, and when the items contained in the lists have well defined lifetimes.</span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Sorcery</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/d8/d25/sorcery_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">sorcery.h</span></a></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">A framework that is both built on and extends the Configuration Framework, Sorcery is a data abstraction layer that maps general CRUD operations on objects to a persistent storage. Sorcery wizards provide the actual interface from the general operations to some storage mechanism. This framework provides a consistent mechanism to manage objects in memory, static configuration schemes, dynamic realtime, and more. If your configuration has complex storage requirements, this framework is probably appropriate.</span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Scheduler</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/d7/d00/sched_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">sched.h</span></a></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">An API for scheduling callbacks to be called at a later time.</span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Stasis</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/dd/d79/stasis_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">stasis.h</span></a></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">An internal publish/subscribe message bus that modules in Asterisk can use to share and consume state information. This includes information about channels, bridges, endpoints, as well as application specific messages. See </span><a href="http://doxygen.asterisk.org/trunk/df/deb/group__StasisTopicsAndMessages.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Stasis Topics and Messages</span></a><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> for more information.</span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Threading</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/d5/d60/utils_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">utils.h</span></a> <br /> <a href="http://doxygen.asterisk.org/trunk/search.php?query=lock.h" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">lock.h</span></a></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Create, manipulate, and synchronize threads. Note that these wrap the basic POSIX calls, which should never be called directly.</span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Thread pools</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/d3/d40/threadpool_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">threadpool.h</span></a></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">A pool of threads to be used for dispatching work items.</span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Task Processors</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/d0/d1e/taskprocessor_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">taskprocessor.h</span></a></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Thread safe queues for dispatching items in a serialized fashion to a dedicated thread or thread pool.</span></td>
                                                                </tr>
                                                                <tr>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Vectors</span></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><a href="http://doxygen.asterisk.org/trunk/d6/d68/vector_8h.html" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">vector.h</span></a></td>
                                                                    <td colspan="1" class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">A managed and dynamically resizing array.</span></td>
                                                                </tr>
                                                            </tbody>
                                                        </table>
                                                    </div>
                                                    <h2 id="CodeReviewChecklist-Locking" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Locking</span> </h2>
                                                    <p class="diff-block-target diff-block-context" style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> </span> </p>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Is the </span><a class="confluence-link unresolved" href="#" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">locking order</span></a><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> well understood and respected?</span> </li>
                                                    </ul>
                                                    <p class="diff-block-target diff-block-context" style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> </span> </p>
                                                    <table class="diff-macro diff-html-added diff-block-target diff-block-context" style="background-color: #f0f0f0;border: 1px solid #dddddd;margin: 10px 1px;padding: 0 2px 2px;width: 100%;background-color: #ddfade;border-color: #93c49f;">
                                                        <thead>
                                                            <tr>
                                                                <th class="diff-macro-title" style="background-color: transparent; text-align: left; font-weight: normal;padding: 5px;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"><span class="icon macro-placeholder-icon" style="background-color: ;line-height: 20px;"><img src="https://wiki.asterisk.org/wiki/s/en_GB-1988229788/4252/6ac85e9b14675c5514a674e1aecae99c9505ed36.48/_/images/icons/macrobrowser/dropdown/tip.png" style="padding-right: 5px; vertical-align: text-bottom;" /> </span>Tip</span></th>
                                                            </tr>
                                                        </thead>
                                                        <tbody>
                                                            <tr>
                                                                <td class="diff-macro-body" style="background-color: #fff;border: 1px solid #dddddd;padding: 10px;; font-size: 13px"> <p style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Common locking orders:</span> </p>
                                                                    <ul>
                                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Channels are locked before the channel private structure</span> </li>
                                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Bridges are locked before bridge_channels, and bridge_channels before channels</span> </li>
                                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Channel locks must not be held before going into autoservice</span> </li>
                                                                    </ul> </td>
                                                            </tr>
                                                        </tbody>
                                                    </table>
                                                    <p class="diff-block-target diff-block-context" style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> </span> </p>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are locks held when accessing data that may change, and are they held when mutating an object?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">When accessing data, are module reloads taken into account?</span> </li>
                                                    </ul>
                                                    <p class="diff-block-target diff-block-context" style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> </span> </p>
                                                    <h2 id="CodeReviewChecklist-MemoryAllocation" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Memory Allocation</span> </h2>
                                                    <h3 id="CodeReviewChecklist-CorrectUseofAsteriskMemoryManagementFunctions" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Correct Use of Asterisk Memory Management Functions</span> </h3>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Does the program use </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ast_malloc</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">, </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ast_calloc</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">, </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ast_realloc</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">, and </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ast_free</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are stack allocations handled in a manner that ensures the stack will not be overrun?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">If interfacing with another library, are the proper library specific memory management routines used correctly?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Is memory allocated in the appropriate spaces, i.e., stack versus heap?</span> </li>
                                                    </ul>
                                                    <h3 id="CodeReviewChecklist-MemoryLeaks%3BStalePointers" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Memory Leaks; Stale Pointers</span> </h3>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Is all memory allocated and freed correctly?</span>
                                                            <ul>
                                                                <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Would appropriate use of the </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">RAII_VAR</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> macro simplify the management of memory?</span> </li>
                                                                <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Given the implementation, would users of the proposed changes be able to infer the lifetime of the allocated memory?</span> </li>
                                                            </ul> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Would any memory allocations be more appropriate as </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">astobj2</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> reference counted objects?</span> </li>
                                                    </ul>
                                                    <h2 id="CodeReviewChecklist-PointerUsage" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Pointer Usage</span> </h2>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are pointers checked for </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">NULL</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> in appropriate locations?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are pointers to reference counted objects de-referenced after their reference has been released?</span> </li>
                                                    </ul>
                                                    <h2 id="CodeReviewChecklist-ImmutableObjects" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Immutable Objects</span> </h2>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are the semantics of the object well understood?</span> </li>
                                                        <li style="font-size: 13px"> <p style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are there properties that should not be changed on an object by convention?</span> </p>
                                                            <table class="diff-macro diff-html-added" style="background-color: #f0f0f0;border: 1px solid #dddddd;margin: 10px 1px;padding: 0 2px 2px;width: 100%;background-color: #ddfade;border-color: #93c49f;">
                                                                <thead>
                                                                    <tr>
                                                                        <th class="diff-macro-title" style="background-color: transparent; text-align: left; font-weight: normal;padding: 5px;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"><span class="icon macro-placeholder-icon" style="background-color: ;line-height: 20px;"><img src="https://wiki.asterisk.org/wiki/s/en_GB-1988229788/4252/6ac85e9b14675c5514a674e1aecae99c9505ed36.48/_/images/icons/macrobrowser/dropdown/note.png" style="padding-right: 5px; vertical-align: text-bottom;" /> </span>Note</span></th>
                                                                    </tr>
                                                                </thead>
                                                                <tbody>
                                                                    <tr>
                                                                        <td class="diff-macro-body" style="background-color: #fff;border: 1px solid #dddddd;padding: 10px;; font-size: 13px"> <p style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">All objects passed as the payload in a Stasis message are immutable by convention. Some objects in the </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">res_pjsip</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> stack are immutable by convention as well. When this is the case, the doxygen documentation will note it as such.</span> </p> </td>
                                                                    </tr>
                                                                </tbody>
                                                            </table> </li>
                                                    </ul>
                                                    <h2 id="CodeReviewChecklist-ReferenceCountedObjects" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Reference Counted Objects</span> </h2>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Is the ownership of an </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ao2</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> object well defined?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are all </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ao2_find</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> references de-referenced?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are all objects returned by an </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ao2_iterator</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> de-referenced?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">If </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">OBJ_NODATA</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> is not specified, is the return of an </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ao2_callback</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> de-referenced?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are the hash and comparison callbacks for an </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ao2_container</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> </span><a class="confluence-link unresolved" href="#" style="color: #326ca6; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">implemented correctly?</span></a> </li>
                                                        <li style="font-size: 13px"> <p style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are all </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ao2_callback</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> uses well understood and necessary?</span> </p>
                                                            <table class="diff-macro diff-html-added" style="background-color: #f0f0f0;border: 1px solid #dddddd;margin: 10px 1px;padding: 0 2px 2px;width: 100%;background-color: #ddfade;border-color: #93c49f;">
                                                                <thead>
                                                                    <tr>
                                                                        <th class="diff-macro-title" style="background-color: transparent; text-align: left; font-weight: normal;padding: 5px;; font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"><span class="icon macro-placeholder-icon" style="background-color: ;line-height: 20px;"><img src="https://wiki.asterisk.org/wiki/s/en_GB-1988229788/4252/6ac85e9b14675c5514a674e1aecae99c9505ed36.48/_/images/icons/macrobrowser/dropdown/note.png" style="padding-right: 5px; vertical-align: text-bottom;" /> </span>Note</span></th>
                                                                    </tr>
                                                                </thead>
                                                                <tbody>
                                                                    <tr>
                                                                        <td class="diff-macro-body" style="background-color: #fff;border: 1px solid #dddddd;padding: 10px;; font-size: 13px"> <p style="font-size: 13px"> <code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ao2_callback</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> can be an expensive operation, as it is </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">O(n)</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> - and iterating in the </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">astobj2</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> library is not as inexpensive as a more simple linked list implementation.</span> </p> </td>
                                                                    </tr>
                                                                </tbody>
                                                            </table> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are all object locks used correctly, and are there instances when lookups can be performed with the </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">OBJ_NOLOCK</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> flag?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Is the reference of an object bumped when it is unlocked, and some other thread could cause it to be destroyed?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Would appropriate use of the </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">RAII_VAR</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> macro simplify the code, or handle off nominal returns in a more graceful fashion?</span> </li>
                                                    </ul>
                                                    <h2 id="CodeReviewChecklist-Strings" class="diff-block-target diff-block-context"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Strings</span> </h2>
                                                    <ul class="diff-block-target diff-block-context">
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are string fields used for rarely changing strings on structs?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Would the use of dynamic strings - </span><code style="font-size: 13px"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ast_str</span></code><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> - be appropriate?</span> </li>
                                                        <li style="font-size: 13px"> <span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Are the Asterisk string functions used?</span> </li>
                                                    </ul>
                                                    <p class="diff-block-context" style="font-size: 13px"> </p>
                                                </div>
                                            </div>
                                        </div>
                                        <table id="email-actions" class="email-metadata" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-top: 1px solid #bbb; color: #505050; margin: 8px 0 0 0; padding: 0; color: #505050">
                                            <tbody>
                                                <tr>
                                                    <td class="left" valign="top" style="font-size: 13px; padding-top: 8px; max-width: 45%; text-align: left"> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/display/AST/Code+Review+Checklist" style="color: #326ca6; text-decoration: none">View Online</a> </span> <span class="email-list-divider" style="color: #505050; padding: 0 0.350em">·</span> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/plugins/likes/like.action?contentId=27820123" style="color: #326ca6; text-decoration: none">Like</a> </span> <span class="email-list-divider" style="color: #505050; padding: 0 0.350em">·</span> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/pages/diffpagesbyversion.action?pageId=27820123&revisedVersion=3&originalVersion=2" style="color: #326ca6; text-decoration: none">View Changes</a> </span> <span class="email-list-divider" style="color: #505050; padding: 0 0.350em">·</span> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/display/AST/Code+Review+Checklist?showComments=true&showCommentArea=true#addcomment" style="color: #326ca6; text-decoration: none">Add Comment</a> </span> </td>
                                                    <td class="right" width="50%" valign="top" style="font-size: 13px; padding-top: 8px; text-align: right"> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/users/removespacenotification.action?spaceKey=AST" style="color: #326ca6; text-decoration: none">Stop watching space</a> </span> <span class="email-list-divider" style="color: #505050; padding: 0 0.350em">·</span> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/users/editmyemailsettings.action" style="color: #326ca6; text-decoration: none">Manage Notifications</a> </span> </td>
                                                </tr>
                                            </tbody>
                                        </table> </td>
                                </tr>
                            </tbody>
                        </table> </td>
                </tr>
                <tr>
                    <td id="email-footer" align="center" style="font-size: 13px; padding: 0 16px 32px 16px; margin: 0"> <small style="font-size: 11px"> This message was sent by <a class="email-footer-link" style="color:#505050;font-size:11px;text-decoration:none;; color: #326ca6; text-decoration: none; color: #505050; font-size: 11px" href="http://www.atlassian.com/software/confluence">Atlassian Confluence</a> 5.1.5, <a class="email-footer-link" style="color:#505050;font-size:11px;text-decoration:none;; color: #326ca6; text-decoration: none; color: #505050; font-size: 11px" href="http://www.atlassian.com/software/confluence/overview/team-collaboration-software?utm_source=email-footer">Team Collaboration Software</a> </small> </td>
                </tr>
            </tbody>
        </table>
    </body>
</html>