# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Apache Traffic Server 6.2\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-02 21:32+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.1.1\n"

#: ../../sdk/trafficserver-timers.en.rst:2
msgid "HTTP Transaction Timers"
msgstr ""

#: ../../sdk/trafficserver-timers.en.rst:22
msgid "Transaction Timers at various states"
msgstr ""

#: ../../sdk/trafficserver-timers.en.rst:24
msgid ""
"Traffic Server runs a variety of timers at various states of a transaction. "
"Typically, a given transaction may include upto two connections (one on the "
"UA/client side and the other on the Origin side). Traffic Server supports "
"two kinds of timers \"Active\" and \"Inactive\" timers for each side "
"respectively, as applicable at a given state. The below picture illustrates "
"the specific timers run at various states in the current implementation. "
"The picture only depicts the HTTP transaction level timers and does not "
"include the TLS handshake states and other more detailed/internal timers in "
"each individual state."
msgstr ""

#: ../../sdk/trafficserver-timers.en.rst:36
msgid "Transaction Timers in various states"
msgstr ""
