Kudos!

Thanks a lot for that!

----- Original Message -----
> Updated Branches:
>   refs/heads/master ebb01e5d0 -> 4ced03d3d
> 
> 
> Doc: fix broken links and syntax errors
> 
> 
> Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
> Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/4ced03d3
> Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/4ced03d3
> Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/4ced03d3
> 
> Branch: refs/heads/master
> Commit: 4ced03d3de9784ca503d71fa876ffd2aa196c6ee
> Parents: ebb01e5
> Author: Masakazu Kitajo <m4s...@gmail.com>
> Authored: Sat Dec 28 01:55:37 2013 +0900
> Committer: James Peach <jpe...@apache.org>
> Committed: Sun Jan 12 12:14:29 2014 -0800
> 
> ----------------------------------------------------------------------
>  doc/admin/transparent-proxy.en.rst              |  7 ++-
>  doc/admin/transparent-proxy/bridge.en.rst       |  8 +--
>  .../transparent-proxy/router-inline.en.rst      |  5 +-
>  .../transparent-proxy/wccp-configuration.en.rst |  6 +--
>  .../configuration/records.config.en.rst         |  1 +
>  doc/sdk/continuations.en.rst                    | 12 ++---
>  doc/sdk/getting-started.en.rst                  | 41 +++++++--------
>  doc/sdk/getting-started/a-simple-plugin.en.rst  |  2 +
>  ...gin-registration-and-version-checking.en.rst |  4 +-
>  .../blacklist-plugin.en.rst                     | 11 ++--
>  .../how-to-create-trafficserver-plugins.en.rst  | 45 +++++++++-------
>  .../roadmap-for-creating-plugins.en.rst         | 13 ++---
>  doc/sdk/http-headers/marshal-buffers.en.rst     |  6 +--
>  doc/sdk/new-protocol-plugins.en.rst             |  6 ++-
>  doc/sdk/preface.en.rst                          |  2 +-
>  doc/sdk/preface/how-to-use-this-book.en.rst     | 54 ++++++++++----------
>  doc/sdk/remap-plugin.en.rst                     |  6 +--
>  doc/sdk/sample-source-code.en.rst               |  2 +-
>  .../unable-to-load-plugins.en.rst               |  4 +-
>  19 files changed, 119 insertions(+), 116 deletions(-)
> ----------------------------------------------------------------------
> 
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/admin/transparent-proxy.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/admin/transparent-proxy.en.rst
> b/doc/admin/transparent-proxy.en.rst
> index 750fdf4..2a2eb5c 100644
> --- a/doc/admin/transparent-proxy.en.rst
> +++ b/doc/admin/transparent-proxy.en.rst
> @@ -27,7 +27,6 @@ Transparent Proxying
>     transparent-proxy/build.en
>     transparent-proxy/bridge.en
>     transparent-proxy/router-inline.en
> -   transparent-proxy/router-inline.en
>     transparent-proxy/wccp-configuration.en
>  
>  Transparent Proxying is the ability of a proxy (such as ATS) to
> @@ -108,7 +107,7 @@ address of the ATS server via DNS as the origin server
> address.
>  
>  Some tested scenarios --
>  
> --  `Transparent bridging <bridge>`_
> --  `Inline router <router-inline>`_
> --  `WCCP Configuration <wccp-configuration>`_
> +-  :doc:`transparent-proxy/bridge.en`
> +-  :doc:`transparent-proxy/router-inline.en`
> +-  :doc:`transparent-proxy/wccp-configuration.en`
>  
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/admin/transparent-proxy/bridge.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/admin/transparent-proxy/bridge.en.rst
> b/doc/admin/transparent-proxy/bridge.en.rst
> index 266e72c..388a9c8 100644
> --- a/doc/admin/transparent-proxy/bridge.en.rst
> +++ b/doc/admin/transparent-proxy/bridge.en.rst
> @@ -78,7 +78,7 @@ Although it looks like this will intercept all port 80
> traffic it will
>  only affect the two flows described above. ``-j redirect`` marks the
>  packet as being diverted to the bridge and not forwarded, and the
>  ``DROP`` target puts the packets in the normal ``iptables`` routing so
> -that we can use standard device tests on them [1]_(#1). Although this
> +that we can use standard device tests on them [1]_. Although this
>  example handles only port 80, other ports are the same except for the
>  port value. Note also the port here is the port from the point of view
>  of the clients and origin servers, not the Traffic Server server port. ::
> @@ -138,7 +138,7 @@ Additional troubleshooting
>  ~~~~~~~~~~~~~~~~~~~~~~~~~~
>  
>  * Check to make sure that ``iptables`` is not filtering (blocking)
> -incoming HTTP connections.
> +  incoming HTTP connections.
>  
>     It is frequently the case that the default tables prevent incoming HTTP.
>     You can clear all filters with the
>     commands::
> @@ -154,7 +154,9 @@ incoming HTTP connections.
>     Note that this problem will prevent the basic bridge (without ATS) from
>     allowing HTTP traffic through.
>  
> -* Verify that IP packet forwarding is enabled. You can check this with::
> +* Verify that IP packet forwarding is enabled.
> +
> +   You can check this with::
>  
>        cat /proc/sys/net/ipv4/ip_forward
>  
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/admin/transparent-proxy/router-inline.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/admin/transparent-proxy/router-inline.en.rst
> b/doc/admin/transparent-proxy/router-inline.en.rst
> index 5e6b64c..f7047b9 100644
> --- a/doc/admin/transparent-proxy/router-inline.en.rst
> +++ b/doc/admin/transparent-proxy/router-inline.en.rst
> @@ -75,10 +75,9 @@ To configure Traffic Server set the following values in
>  
>  ``proxy.config.http.server_port``
>      ``STRING``
> -    Default: *value from* ```--on-port`` <#on_port>`_
> +    Default: *value from* ``--on-port``
>  
> -proxy.config.http.server_port_attr
> -{#proxy.config.http.server_port_attr}
> +``proxy.config.http.server_port_attr``
>      ``STRING``
>      Default: ``=``
>  
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/admin/transparent-proxy/wccp-configuration.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/admin/transparent-proxy/wccp-configuration.en.rst
> b/doc/admin/transparent-proxy/wccp-configuration.en.rst
> index 4ed7598..5a9a41c 100644
> --- a/doc/admin/transparent-proxy/wccp-configuration.en.rst
> +++ b/doc/admin/transparent-proxy/wccp-configuration.en.rst
> @@ -33,7 +33,7 @@ are
>  -  WCCP fails open so that if the Traffic Server machine fails, it is
>     bypassed and users continue to have Internet access.
>  
> -Use of WCCP only makes sense for client side transparency [1]_(#1)
> +Use of WCCP only makes sense for client side transparency [1]_
>  because if the clients are explicitly proxied by Traffic Server there's
>  no benefit to WCCP fail open, as the clients will continue to directly
>  access the unresponsive Traffic Server host. It would be better to
> @@ -85,7 +85,7 @@ are to be used.
>  
>  In general the dedicated topology is preferred. However, if the router
>  has only two interfaces one of the shared topologies will be
> -required [2]_(#2). Click the links above for more detailed configuration
> +required [2]_ Click the links above for more detailed configuration
>  information on a specific topology.
>  
>  Shared interface issues
> @@ -102,7 +102,7 @@ the dedicated interface case. This enables the packets to
> be
>  distinguished at layer 3. For this reason, layer 2 redirection cannot be
>  used because the WCCP configuration cannot distinguish between packets
>  returning from the origin server and packets returning from Traffic
> -Server as they are distinguished only by layer 2 addressing [3]_(#3).
> +Server as they are distinguished only by layer 2 addressing [3]_.
>  Fortunately the GRE tunnel used for packet forwarding and return can be
>  used as the simulated interface for Traffic Server.
>  
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/reference/configuration/records.config.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/reference/configuration/records.config.en.rst
> b/doc/reference/configuration/records.config.en.rst
> index 1eef625..f0d7f8a 100644
> --- a/doc/reference/configuration/records.config.en.rst
> +++ b/doc/reference/configuration/records.config.en.rst
> @@ -1313,6 +1313,7 @@ Customizable User Response Pages
>  ================================
>  
>  .. ts:cv:: CONFIG proxy.config.body_factory.enable_customizations INT 1
> +
>     Specifies whether customizable response pages are language specific
>     or not:
>  
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/sdk/continuations.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/sdk/continuations.en.rst b/doc/sdk/continuations.en.rst
> index df93565..1981fd7 100644
> --- a/doc/sdk/continuations.en.rst
> +++ b/doc/sdk/continuations.en.rst
> @@ -31,11 +31,11 @@ mutex.
>  
>  This chapter covers the following topics:
>  
> --  `Mutexes and Data <MutexesData>`__
> +-  `Mutexes and Data`_
>  
> --  `How to Activate Continuations <ActivateContinuations.html>`__
> +-  :doc:`continuations/how-to-activate-continuations.en`
>  
> --  `Writing Handler Functions <WritingHandlerFunctions.html>`__
> +-  :doc:`continuations/writing-handler-functions.en`
>  
>  Mutexes and Data
>  ----------------
> @@ -55,15 +55,13 @@ one of the following:
>  Before being activated, a caller must grab the continuation's mutex.
>  This requirement makes it possible for a continuation's handler function
>  to safely access its data and to prevent multiple callers from running
> -it at the same time (see the `sample Protocol
> -plugin <../new-protocol-plugins#AboutSampleProtocol>`__ for usage). The
> +it at the same time (see the :ref:`about-the-sample-protocol` for usage).
> The
>  data protected by the mutex is any global or continuation data
>  associated to the continuation by ``TSContDataSet``. This does not
>  include the local data created by the continuation handler function. A
>  typical example of continuations created with associated data structures
>  and mutexes is the transaction state machine created in the sample
> -Protocol plugin (see `One Way to Implement a Transaction State
> -Machine
> <../new-protocol-plugins#OneWayImplementaTransactionStateMachine>`__).
> +Protocol plugin (see
> :ref:`one-way-to-implement-a-transaction-state-machine`).
>  
>  A reentrant call occurs when the continuation passed as an argument to
>  the API can be called in the same stack trace as the function calling
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/sdk/getting-started.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/sdk/getting-started.en.rst b/doc/sdk/getting-started.en.rst
> index a39d0cf..38c14bb 100644
> --- a/doc/sdk/getting-started.en.rst
> +++ b/doc/sdk/getting-started.en.rst
> @@ -31,22 +31,19 @@ The Traffic Server API enables you to create plugins,
> using the C
>  programming language, that customize the behavior of your Traffic Server
>  installation. This chapter contains the following sections:
>  
> --  `Understanding Traffic Server Plugins <#UnderstandingTSPlugins>`__ --
> -   a brief introduction to plugins. For more details, see `How to Create
> -   Traffic Server Plugins <../how-to-create-trafficserver-plugins>`__
> +-  `Understanding Traffic Server Plugins`_ -- a brief introduction to
> plugins.
> +   For more details, see :doc:`how-to-create-trafficserver-plugins.en`
>  
> --  `A Simple Plugin <a-simple-plugin>`__ -- walks through compiling and
> +-  :doc:`getting-started/a-simple-plugin.en` -- walks through compiling and
>     loading an example ``hello world`` plugin.
>  
> --  `Plugin Registration and Version
> -   Checking <plugin-registration-and-version-checking>`__ -- shows you
> -   how to register your plugin and make sure it's compatible with the
> +-  :doc:`getting-started/plugin-registration-and-version-checking.en` --
> shows
> +   you how to register your plugin and make sure it's compatible with the
>     version of Traffic Server you're using.
>  
> --  `Naming Conventions <NamingConventions.html>`__ -- outlines Traffic
> +-  :doc:`getting-started/naming-conventions.en` -- outlines Traffic
>     Server API naming conventions. For guidelines on creating plugin
> -   source code, see `How to Create Traffic Server
> -   Plugins <../how-to-create-trafficserver-plugins>`__
> +   source code, see :doc:`how-to-create-trafficserver-plugins.en`
>  
>  Understanding Traffic Server Plugins
>  ------------------------------------
> @@ -80,7 +77,9 @@ call-back functions you've registered for that event type.
>     out-of-range pointer, can cause Traffic Server processes to crash and
>     may ultimately result in unpredictable behavior.
>  
> -**Plugin Process** {#PluginProcess}
> +**Plugin Process**
> +
> +.. _PluginProcess:
>  
>  .. figure:: /static/images/sdk/plugin_process.jpg
>     :align: center
> @@ -123,10 +122,11 @@ Some examples of plugins include:
>     designated port and then uses Traffic Server's proxy server & cache
>     to serve client requests.
>  
> -The figure below, `Possible Traffic Server
> -Plugins <#possibleTSplugins>`__, illustrates several types of plugins.
> +The figure below, :ref:`possibleTSplugins`, illustrates several types of
> plugins.
> +
> +**Possible Traffic Server Plugins**
>  
> -**Possible Traffic Server Plugins** {#possibleTSplugins}
> +.. _possibleTSplugins:
>  
>  .. figure:: /static/images/sdk/Uses.jpg
>     :align: center
> @@ -137,8 +137,8 @@ Plugins <#possibleTSplugins>`__, illustrates several
> types of plugins.
>  You can find basic examples for many plugins in the SDK sample code:
>  
>  -  ``append-transform.c`` adds text from a specified file to HTTP/text
> -   responses. This plugin is explained in `The Append-Transform
> -   Plugin <../http-transformation-plugin/append-transform-plugin>`__
> +   responses. This plugin is explained in
> +   :doc:`http-transformation-plugin/append-transform-plugin.en`
>  
>  -  The compression plugin in the figure communicates with the server
>     that actually does the compression. The ``server-transform.c`` plugin
> @@ -152,8 +152,7 @@ You can find basic examples for many plugins in the SDK
> sample code:
>  
>  -  ``blacklist-1.c`` reads blacklisted servers from a configuration file
>     and denies client access to these servers. This plugin is explained
> -   in `The Blacklist
> -   Plugin <../header-based-plugin-examples/blacklist-plugin>`__.
> +   in :doc:`header-based-plugin-examples/blacklist-plugin.en`.
>  
>  Plugin Loading
>  ~~~~~~~~~~~~~~
> @@ -163,8 +162,7 @@ file to determine the names of all shared plugin
> libraries that need to
>  be loaded. The ``plugin.config`` file also defines arguments that are to
>  be passed to each plugin's initialization function, ``TSPluginInit``.
>  The :file:`records.config` file defines the path to each plugin shared
> -library, as described in `Specify the Plugin's
> -Location <SpecifyingPluginLocation.html>`__.
> +library, as described in :ref:`specify-the-plugins-location`.
>  
>  .. note:: The path for each of these files is *<root_dir>*\ ``/config/``,
>  where *<root_dir>* is where you installed Traffic Server.
>  
> @@ -243,5 +241,4 @@ The ``TSPluginInit`` function has two arguments:
>  -  The ``argv`` argument is an array of pointers to the actual arguments
>     defined in the ``plugin.config`` file for that plugin
>  
> -See `TSPluginInit <InitializationFunctions.html#TSPluginInit>`__ for
> -details about ``TSPluginInit``.
> +See :c:func:`TSPluginInit` for details about ``TSPluginInit``.
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/sdk/getting-started/a-simple-plugin.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/sdk/getting-started/a-simple-plugin.en.rst
> b/doc/sdk/getting-started/a-simple-plugin.en.rst
> index 31f4733..18d0f78 100644
> --- a/doc/sdk/getting-started/a-simple-plugin.en.rst
> +++ b/doc/sdk/getting-started/a-simple-plugin.en.rst
> @@ -77,6 +77,8 @@ functions are triggered by the same event, then Traffic
> Server invokes
>  each plugin's function in the order each was defined in the
>  ``plugin.config`` file.
>  
> +.. _specify-the-plugins-location:
> +
>  Specify the Plugin's Location
>  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/sdk/getting-started/plugin-registration-and-version-checking.en.rst
> ----------------------------------------------------------------------
> diff --git
> a/doc/sdk/getting-started/plugin-registration-and-version-checking.en.rst
> b/doc/sdk/getting-started/plugin-registration-and-version-checking.en.rst
> index b7171c7..7b403b8 100644
> --- a/doc/sdk/getting-started/plugin-registration-and-version-checking.en.rst
> +++ b/doc/sdk/getting-started/plugin-registration-and-version-checking.en.rst
> @@ -23,8 +23,8 @@ version of Traffic Server.
>  
>  Use the following interfaces:
>  
> --  ```TSPluginRegister``
> <http://people.apache.org/~amc/ats/doc/html/ts_8h.html#a6d7f514e70abaf097c4a3f1ba01f6df8>`__
> --  ```TSTrafficServerVersionGet``
> <http://people.apache.org/~amc/ats/doc/html/InkAPI_8cc.html#a3ef91e01612ffdce6dd040f836db08e8>`__
> +-  `TSPluginRegister
> <http://people.apache.org/~amc/ats/doc/html/ts_8h.html#a6d7f514e70abaf097c4a3f1ba01f6df8>`_
> +-  `TSTrafficServerVersionGet
> <http://people.apache.org/~amc/ats/doc/html/InkAPI_8cc.html#a3ef91e01612ffdce6dd040f836db08e8>`_
>  
>  The following version of ``hello-world`` registers the plugin and
>  ensures it's running with a compatible version of Traffic Server.
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/sdk/header-based-plugin-examples/blacklist-plugin.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/sdk/header-based-plugin-examples/blacklist-plugin.en.rst
> b/doc/sdk/header-based-plugin-examples/blacklist-plugin.en.rst
> index 91c782d..85048e9 100644
> --- a/doc/sdk/header-based-plugin-examples/blacklist-plugin.en.rst
> +++ b/doc/sdk/header-based-plugin-examples/blacklist-plugin.en.rst
> @@ -25,8 +25,7 @@ blacklisted site, then the plugin returns an ``Access
> forbidden``
>  message to the client.
>  
>  The flow of HTTP processing with the blacklist plugin is illustrated in
> -the figure titled `"Blacklist
> -Plugin" <../../how-to-create-trafficserver-plugins#BlacklistPlugin>`__.
> +the figure titled :ref:`BlackListPlugin`.
>  This example also contains a simple configuration management interface.
>  It can read a list of blacklisted sites from a file (``blacklist.txt``)
>  that can be updated by a Traffic Server administrator. When the
> @@ -49,7 +48,7 @@ Traffic Server has a multi-threaded design, race conditions
> can occur if
>  several threads try to access the same continuation's data.
>  
>  Here is how the static parent continuation is created in
> -:file:blacklist-1.c`:
> +``blacklist-1.c``:
>  
>  .. code-block:: c
>  
> @@ -93,9 +92,9 @@ When you write handler functions, you have to anticipate
> any events that
>  might be sent to the handler by hooks or by other functions. In the
>  Blacklist plugin, ``TS_EVENT_OS_DNS`` is sent because of the global hook
>  established in ``TSPluginInit``, ``TS_EVENT_HTTP_SEND_RESPONSE_HDR`` is
> -sent because the plugin contains a transaction hook (see `Setting Up a
> -Transaction Hook <setting-a-transaction-hook.html>`__). It is good
> -practice to have a default case in your switch statements.
> +sent because the plugin contains a transaction hook
> +(see :doc:`blacklist-plugin/setting-up-a-transaction-hook.en`).
> +It is good practice to have a default case in your switch statements.
>  
>  .. toctree::
>     :maxdepth: 2
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/sdk/how-to-create-trafficserver-plugins.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/sdk/how-to-create-trafficserver-plugins.en.rst
> b/doc/sdk/how-to-create-trafficserver-plugins.en.rst
> index 9e7a11c..0c26610 100644
> --- a/doc/sdk/how-to-create-trafficserver-plugins.en.rst
> +++ b/doc/sdk/how-to-create-trafficserver-plugins.en.rst
> @@ -1,4 +1,4 @@
> -.. _how-to-create-traffic-server-plugins:
> +.. _how-to-create-trafficserver-plugins:
>  
>  How to Create Traffic Server Plugins
>  ************************************
> @@ -39,7 +39,7 @@ Reading this chapter will help you to understand:
>  -  How plugins can hook onto and modify/extend Traffic Server's HTTP
>     processing.
>  
> --  A `roadmap for writing plugins <roadmap-for-creating-plugins>`__,
> +-  A :doc:`roadmap for writing plugins
> <how-to-create-trafficserver-plugins/roadmap-for-creating-plugins.en>`,
>     with an overview of the functionality provided by the Traffic Server
>     API.
>  
> @@ -74,7 +74,7 @@ implemented as continuations.
>  Continuation objects are used throughout Traffic Server. Some might live
>  for the duration of the Traffic Server process, while others are created
>  (perhaps by other continuations) for specific needs and then destroyed.
> -`Traffic Server Internals <#TSInternals>`__ (below) shows how the major
> +:ref:`TSInternals` (below) shows how the major
>  components of Traffic Server interact. Traffic Server has several
>  **processors**, such as *cache processor* and *net processor*, that
>  consolidate cache or network I/O tasks. Processors talk to the event
> @@ -83,7 +83,9 @@ continuation by sending it an event. When a continuation
> receives an
>  event, it wakes up, does some work, and either destroys itself or goes
>  back to sleep & waits for the next event.
>  
> -**Traffic Server Internals** {#TSInternals}
> +**Traffic Server Internals**
> +
> +.. _TSInternals:
>  
>  .. figure:: /static/images/sdk/event_sys80.jpg
>     :alt: Traffic Server Internals
> @@ -95,7 +97,9 @@ code plugins (except ``hello-world``) are continuations
> that are created
>  when Traffic Server starts up; they then wait for events that trigger
>  them into activity.
>  
> -**Traffic Server with Plugins** {#TSwithPlugins}
> +**Traffic Server with Plugins**
> +
> +.. _TSwithPlugins:
>  
>  .. figure:: /static/images/sdk/evt_plugin120.jpg
>     :alt: Traffic Server with Plugins
> @@ -135,15 +139,13 @@ is handled by an HTTP state machine. These machines
> follow a complex
>  state diagram that includes all of the states required to support
>  Traffic Server's features. The Traffic Server API provides hooks to a
>  subset of these states, chosen for their relevance to plugins. You can
> -view the API hooks and corresponding HTTP states in the `HTTP
> -Transaction State
> -Diagram <../http-hoooks-and-transactions#HHTTPTransactionStateDiagram>`__.
> +view the API hooks and corresponding HTTP states in the
> +:ref:`http-txn-state-diagram`.
>  
>  The example in this section (below) explains how a plugin typically
>  intervenes and extends Traffic Server's processing of an HTTP
>  transaction. Complete details about hooking on to Traffic Server
> -processes are provided in `HTTP Hooks and
> -Transactions <HTTPHooksAndTransactions.html>`__.
> +processes are provided in :doc:`http-hooks-and-transactions.en`.
>  
>  HTTP Transaction
>  ^^^^^^^^^^^^^^^^
> @@ -156,7 +158,9 @@ origin server. The following diagram shows some states in
> a typical
>  transaction - specifically, the scenario wherein content is served from
>  cache.
>  
> -**Simplified HTTP Transaction** {#SimplifiedHTTPTransaction}
> +**Simplified HTTP Transaction**
> +
> +.. _SimplifiedHTTPTransaction:
>  
>  .. figure:: /static/images/sdk/transact75.jpg
>     :alt: Simplified HTTP Transaction
> @@ -173,14 +177,16 @@ the cache (a "hit"), then Traffic Server checks it for
> freshness.
>  If the content is fresh, then Traffic Server sends a reply header to the
>  client. If the content is stale, then Traffic Server opens a connection
>  to the origin server and requests the content. The figure above,
> -`Simplified HTTP Transaction <#SimplifiedHTTPTransaction>`__, does *not*
> +:ref:`SimplifiedHTTPTransaction`, does *not*
>  show behavior in the event of an error. If there is an error at a any
>  stage, then the HTTP state machine jumps to the "send reply header"
>  state and sends a reply. If the reply is an error, then the transaction
>  closes. If the reply is not an error, then Traffic Server first sends
>  the response content before it closes the transaction.
>  
> -**API Hooks Corresponding to States** {#APIHooksCorrespondingtoStates}
> +**API Hooks Corresponding to States**
> +
> +.. _APIHooksCorrespondingtoStates:
>  
>  .. figure:: /static/images/sdk/transact_hook75.jpg
>     :alt: API Hooks Corresponding to States Listed in
> @@ -192,10 +198,12 @@ reflects the Traffic Server state that was *just
> completed*. For
>  example, the "OS DNS lookup" hook wakes up a plugin right *after* the
>  origin server DNS lookup. For a plugin that requires the IP address of
>  the requested origin server, this hook is the right one to use. The
> -Blacklist plugin works in this manner, as shown in the `Blacklist
> -Plugin <#BlacklistPlugin>`__ diagram below.
> +Blacklist plugin works in this manner, as shown in the
> :ref:`BlackListPlugin`
> +diagram below.
> +
> +**Blacklist Plugin**
>  
> -**Blacklist Plugin** {#BlacklistPlugin}
> +.. _BlackListPlugin:
>  
>  .. figure:: /static/images/sdk/blacklist75.jpg
>     :alt: Blacklist Plugin
> @@ -220,9 +228,8 @@ to the "send reply header" state is a **tr**\
> ***ansaction hook***,
>  meaning that this hook is only invoked for *specified transactions* (in
>  the Blacklist example, it's only used for requests to blacklisted
>  servers). Several examples of setting up hooks are provided in the code
> -example chapters: `Header-Based Plugin
> -Examples <../header-based-plugin-examples>`__ and `HTTP Transformation
> -Plugins <../http-transformation-plugin>`__
> +example chapters: :doc:`header-based-plugin-examples.en` and
> +:doc:`http-transformation-plugin.en`
>  
>  **Header manipulation plugins**, such as filtering, basic authorization,
>  or redirects, usually have a global hook to the DNS lookup or the read
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/sdk/how-to-create-trafficserver-plugins/roadmap-for-creating-plugins.en.rst
> ----------------------------------------------------------------------
> diff --git
> a/doc/sdk/how-to-create-trafficserver-plugins/roadmap-for-creating-plugins.en.rst
> b/doc/sdk/how-to-create-trafficserver-plugins/roadmap-for-creating-plugins.en.rst
> index c9759e4..7634bfe 100644
> ---
> a/doc/sdk/how-to-create-trafficserver-plugins/roadmap-for-creating-plugins.en.rst
> +++
> b/doc/sdk/how-to-create-trafficserver-plugins/roadmap-for-creating-plugins.en.rst
> @@ -61,21 +61,18 @@ Below are some guidelines for creating a plugin:
>     These examples are discussed in the next three chapters.
>  
>  2. Determine where your plugin needs to hook on to Traffic Server's HTTP
> -   processing (view the `HTTP Transaction State
> -   Diagram <../http-hoooks-and-transactions#HTTPTransactionStateDiagram>`__
> +   processing (view the :ref:`http-txn-state-diagram`
>  
> -3. Read `Header-Based Plugin
> -   Examples <../header-based-plugin-examples>`_ to learn the basics of
> +3. Read :doc:`../header-based-plugin-examples.en` to learn the basics of
>     writing plugins: creating continuations and setting up hooks. If you
> -   want to write a plugin that transforms data, then read `HTTP
> -   Transformation Plugins <HTTPTransformationPlugins.html>`_.
> +   want to write a plugin that transforms data, then read
> +   :doc:`../http-transformation-plugin.en`
>  
>  4. Figure out what parts of the Traffic Server API you need to use and
>     then read about the details of those APIs in this manual's reference
>     chapters.
>  
> -5. Compile and load your plugin (see `Getting
> -   Started <../getting-started>`_
> +5. Compile and load your plugin (see :doc:`../getting-started.en`
>  
>  6. Depending on your plugin's functionality, you might start testing it
>     by issuing requests by hand and checking for the desired behavior in
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/sdk/http-headers/marshal-buffers.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/sdk/http-headers/marshal-buffers.en.rst
> b/doc/sdk/http-headers/marshal-buffers.en.rst
> index 28088b7..d3f0664 100644
> --- a/doc/sdk/http-headers/marshal-buffers.en.rst
> +++ b/doc/sdk/http-headers/marshal-buffers.en.rst
> @@ -28,9 +28,9 @@ object (``TSMLoc``) and the marshal buffer containing the
> object
>  Routines exist for manipulating the object based on these two pieces of
>  information. For example, see one of the following:
>  
> --  `HTTP Headers <http-headers>`__
> --  `URLs <urls>`__
> --  `MIME Headers <mime-headers>`__
> +-  :doc:`http-headers.en`
> +-  :doc:`urls.en`
> +-  :doc:`mime-headers.en`
>  
>  The **marshal buffer functions** enable you to create and destroy
>  Traffic Server's marshal buffers, which are the data structures that
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/sdk/new-protocol-plugins.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/sdk/new-protocol-plugins.en.rst
> b/doc/sdk/new-protocol-plugins.en.rst
> index 4ca91e7..195fce8 100644
> --- a/doc/sdk/new-protocol-plugins.en.rst
> +++ b/doc/sdk/new-protocol-plugins.en.rst
> @@ -29,6 +29,8 @@ plugins that support new protocols. It also provides a
> detailed review
>  of code for a sample Protocol plugin that supports a very simple
>  artificial HTTP-like protocol.
>  
> +.. _about-the-sample-protocol:
> +
>  About the Sample Protocol
>  -------------------------
>  
> @@ -178,6 +180,8 @@ lookups or cache writes uses ``TSCacheRead``,
> ``TSCacheWrite``,
>  Cache Processor and Traffic Server event system. Similarly, any plugin
>  that does DNS lookups receives events from the Host Database Processor.
>  
> +.. _one-way-to-implement-a-transaction-state-machine:
> +
>  One Way to Implement a Transaction State Machine
>  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  
> @@ -244,7 +248,7 @@ Plugin" <#ImplementTransStMachine>`__.
>  **How Transaction State Machines are Implemented in the Protocol
>  Plugin** {#ImplementTransStMachine}
>  
> -.. figure:: /images/sdk/txn_sm.jpg
> +.. figure:: ../static/images/sdk/txn_sm.jpg
>     :alt: How Transaction State Machines are Implemented in the Protocol
>     Plugin
>  
>     How Transaction State Machines are Implemented in the Protocol Plugin
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/sdk/preface.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/sdk/preface.en.rst b/doc/sdk/preface.en.rst
> index 2c18876..c2c6318 100644
> --- a/doc/sdk/preface.en.rst
> +++ b/doc/sdk/preface.en.rst
> @@ -31,7 +31,7 @@ creating plugins. **Plugins** are programs that add
> services (such as
>  filtering or content transformation) or entire features (such as new
>  protocol support) to Traffic Server. If you are new to writing Traffic
>  Server plugins, then read the first two chapters, :ref:`sdk-getting-started`
> -and :ref:`how-to-create-to-create-trafficserver-plugins`, and use the
> +and :ref:`how-to-create-trafficserver-plugins`, and use the
>  remaining chapters as needed. :ref:`header-based-plugin-examples` provides
>  details about
>  plugins that work on HTTP headers, while :ref:`http-transformation-plugin`
>  explains how to write a
>  plugin that transforms or scans the body of an HTTP response. If you
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/sdk/preface/how-to-use-this-book.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/sdk/preface/how-to-use-this-book.en.rst
> b/doc/sdk/preface/how-to-use-this-book.en.rst
> index 764e4ea..6c437fd 100644
> --- a/doc/sdk/preface/how-to-use-this-book.en.rst
> +++ b/doc/sdk/preface/how-to-use-this-book.en.rst
> @@ -29,16 +29,14 @@ This book has the following basic components:
>  
>  -  Reference material
>  
> -If you're new to writing Traffic Server plugins, then read `Getting
> -Started <../getting-started>`_ and `Creating Traffic Server
> -Plugins <../how-to-create-trafficserver-plugins>`_, and use the
> -remaining chapters as needed. `Header-Based Plugin
> -Examples <../header-based-plugin-examples>`_ provides details about
> -plugins that work on HTTP headers, while `HTTP Transformation
> -Plugins <../http-transformation-plugin>`_ explains how to write a
> -plugin that transforms or scans the body of an HTTP response. `New
> -Protocol Plugins <../new-protocol-plugins>`_ provides essential
> -information if you want to support your own protocol on Traffic Server.
> +If you're new to writing Traffic Server plugins, then read
> +:doc:`../getting-started.en` and
> :doc:`../how-to-create-trafficserver-plugins.en`,
> +and use the remaining chapters as needed.
> :doc:`../header-based-plugin-examples.en`
> +provides details about plugins that work on HTTP headers, while
> +:doc:`../http-transformation-plugin.en` explains how to write a plugin that
> +transforms or scans the body of an HTTP response.
> :doc:`../new-protocol-plugins.en`
> +provides essential information if you want to support your own protocol on
> +Traffic Server.
>  
>  You can look up information in the following reference sections:
>  
> @@ -48,36 +46,36 @@ You can look up information in the following reference
> sections:
>     Doxygen reference
>  -  `Type
>     Index
>     <http://ci.apache.org/projects/trafficserver/trunk/doxygen/classes.html>`_
> --  `Sample Source Code <../sample-source-code>`_
> +-  :doc:`Sample Source Code <../sample-source-code.en>`
>  -  `Deprecated
>     Functions
>     
> <http://ci.apache.org/projects/trafficserver/trunk/doxygen/deprecated.html>`_
>  
>  Below is a section-by-section breakdown of this guide:
>  
> --  `Getting Started <../getting-started>`_
> +-  :doc:`Getting Started <../getting-started.en>`
>     How to compile and load plugins. Walks through a simple "hello
>     world" example; explains how to initialize and register plugins.
>  
> --  `How to Create Traffic Server
> -   Plugins <../how-to-create-trafficserver-plugins>`_
> +-  :doc:`How to Create Traffic Server
> +   Plugins <../how-to-create-trafficserver-plugins.en>`
>     Basic structures that all plugins use: events, continuations, and
>     how to hook on to Traffic Server processes. Detailed explication of a
>     sample blacklisting plugin.
>  
> --  `Remap Plugin <../remap-plugin>`_
> +-  :doc:`Remap Plugin <../remap-plugin.en>`
>     This chapter demonstrates on a practical example how you can
>     exploit the Traffic Server remap API for your plugins.
>  
> --  `Header-Based Plugin Examples <../header-based-plugin-examples>`_
> +-  :doc:`Header-Based Plugin Examples <../header-based-plugin-examples.en>`
>     Detailed explanation about writing plugins that work on HTTP
>     headers; discusses sample blacklisting and basic authorization
>     plugins.
>  
> --  `HTTP Transformation Plugins <../http-transformation-plugin>`_
> +-  :doc:`HTTP Transformation Plugins <../http-transformation-plugin.en>`
>     Detailed explanation of the null-transform example; also discusses
>     ``VConnections``, ``VIOs``, and IO buffers.
>  
> --  `New Protocol Plugins <../new-protocol-plugins>`_
> +-  :doc:`New Protocol Plugins <../new-protocol-plugins.en>`
>     Detailed explanation of a sample protocol plugin that supports a
>     synthetic protocol. Discusses ``VConnections`` and mutexes, as well
>     as the new ``NetConnection``, DNS lookup, logging, and cache APIs.
> @@ -85,44 +83,44 @@ Below is a section-by-section breakdown of this guide:
>  The remaining sections comprise the API function reference and are
>  organized by function type:
>  
> --  `Miscellaneous Interface Guide <../misc-interface-guide>`_
> +-  :doc:`Miscellaneous Interface Guide <../misc-interface-guide.en>`
>     Details error-writing and tracing functions, thread functions, and
>     Traffic Server API versions of the ``malloc`` and ``fopen`` families.
>     The Traffic Server API versions overcome various C library
>     limitations.
>  
> --  `HTTP Hooks and Transactions <../http-hoooks-and-transactions>`_
> +-  :doc:`HTTP Hooks and Transactions <../http-hooks-and-transactions.en>`
>     Functions in this chapter hook your plugin to Traffic Server HTTP
>     processes.
>  
> --  `HTTP Headers <../http-headers>`_
> +-  :doc:`HTTP Headers <../http-headers.en>`
>     Contains instructions for implementing performance enhancements for
>     all plugins that manipulate HTTP headers. These functions examine and
>     modify HTTP headers, MIME headers, URLs, and the marshal buffers that
>     contain header information. If you are working with headers, then be
>     sure to read this chapter.
>  
> --  `Mutex Guide <../mutex-guide>`_
> +-  :doc:`Mutex Guide <../mutex-guide.en>`
>  
> --  `Continuations <../continuations>`_
> +-  :doc:`Continuations <../continuations.en>`
>     Continuations provide the basic callback mechanism and data
>     abstractions used in Traffic Server.
>  
> --  `Plugin Configurations <../plugin-configurations>`_
> +-  :doc:`Plugin Configurations <../plugin-configurations.en>`
>  
> --  `Actions Guide <../actions-guide>`_
> +-  :doc:`Actions Guide <../actions-guide.en>`
>     Describes how to use ``TSActions`` and the ``TSDNSLookup`` API.
>  
> --  `IO Guide <../io-guide>`_
> +-  :doc:`IO Guide <../io-guide.en>`
>     Describes how to use the Traffic Server IO interfaces:
>     ``TSVConnection``, ``TSVIO``, ``TSIOBuffer``, ``TSNetVConnection``,
>     the Cache API.
>  
> --  `Plugin Management <../plugin-management>`_
> +-  :doc:`Plugin Management <../plugin-management.en>`
>     These functions enable you to set up a configuration interface for
>     plugins, access installed plugin files, and set up plugin licensing.
>  
> --  `Adding Statistics <../adding-statistics>`_
> +-  :doc:`Adding Statistics <../adding-statistics.en>`
>     These functions add statistics to your plugin.
>  
>  -  `Function
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/sdk/remap-plugin.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/sdk/remap-plugin.en.rst b/doc/sdk/remap-plugin.en.rst
> index 6506653..9a22cc3 100644
> --- a/doc/sdk/remap-plugin.en.rst
> +++ b/doc/sdk/remap-plugin.en.rst
> @@ -54,16 +54,16 @@ Required Functions
>  
>  A remap plugin is required to implement the following functions:
>  
> --  ```TSRemapInit``
> <http://people.apache.org/~amc/ats/doc/html/remap_8h.html#af7e9b1eee1c38c6f8dcc67a65ba02c24>`__:
> +-  `TSRemapInit
> <http://people.apache.org/~amc/ats/doc/html/remap_8h.html#af7e9b1eee1c38c6f8dcc67a65ba02c24>`_:
>     the remap initialization function, called once when the plugin is
>     loaded
>  
> --  ```TSRemapNewInstance``
> <http://people.apache.org/~amc/ats/doc/html/remap_8h.html#a963de3eeed2ed7a2da483acf77dc42ca>`__:
> +-  `TSRemapNewInstance
> <http://people.apache.org/~amc/ats/doc/html/remap_8h.html#a963de3eeed2ed7a2da483acf77dc42ca>`_:
>     a new instance is created for each rule associated with the plugin.
>     Called each time the plugin used in a remap rule (this function is
>     what processes the pparam values)
>  
> --  ```TSRemapDoRemap``
> <http://people.apache.org/~amc/ats/doc/html/remap_8h.html#acf73f0355c591e145398211b3c0596fe>`__:
> +-  `TSRemapDoRemap
> <http://people.apache.org/~amc/ats/doc/html/remap_8h.html#acf73f0355c591e145398211b3c0596fe>`_:
>     the entry point used by Traffic Server to find the new URL to which
>     it remaps; called every time a request comes in
>  
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/sdk/sample-source-code.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/sdk/sample-source-code.en.rst
> b/doc/sdk/sample-source-code.en.rst
> index 42be2a9..3568f41 100644
> --- a/doc/sdk/sample-source-code.en.rst
> +++ b/doc/sdk/sample-source-code.en.rst
> @@ -22,7 +22,7 @@ This appendix provides several source code examples. In the
> online
>  formats of this book, function calls are linked to their references in
>  the previous chapters. The following sample plugins are provided:
>  
> --  `blacklist-1.c <App_SampleSourceCode.html#Sample_blacklist-1.c>`__
> +-  `blacklist-1.c`_
>  
>  blacklist-1.c
>  -------------
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4ced03d3/doc/sdk/troubleshooting-tips/unable-to-load-plugins.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/sdk/troubleshooting-tips/unable-to-load-plugins.en.rst
> b/doc/sdk/troubleshooting-tips/unable-to-load-plugins.en.rst
> index 606c144..0d8f7f3 100644
> --- a/doc/sdk/troubleshooting-tips/unable-to-load-plugins.en.rst
> +++ b/doc/sdk/troubleshooting-tips/unable-to-load-plugins.en.rst
> @@ -32,5 +32,5 @@ To load plugins, follow the steps below.
>  
>  5. Restart Traffic Server.
>  
> -For detailed information about each step above, refer to `A Simple
> -Plugin <../getting-started/a-simple-plugin>`__.
> +For detailed information about each step above, refer to
> +:doc:`../getting-started/a-simple-plugin.en`.
> 
> 
> 

-- 
Igor Galić

Tel: +43 (0) 664 886 22 883
Mail: i.ga...@brainsware.org
URL: http://brainsware.org/
GPG: 8716 7A9F 989B ABD5 100F  4008 F266 55D6 2998 1641



Reply via email to