TS-898: clear socket address before use

Coverity #1196477
TS-898: missing va_end in fabricate_with_old_api_build_va

Coverity #1021644
TS-898: annotate intentional switch fallthrough

Coverity #1021906
Update HttpServerSession close debug message to match the open one.
Make HttpSM::release_server_session slightly more readable.
tcp_info: remove whitespace
TS-2622: optimize the function ink_cluster_time

  1. remove useless two global variables
  2. use ink_get_hrtime() instead of time(NULL)
  3. remove useless CAS to set variable global_time
TS-2603: Do not update hostdb if intercept exists

We should not update hostdb if a HttpSM was intercepted, as the
HttpSM did not really connect to the origin server.  Otherwise we
may set the hostdb address to zero if timeout occurs.

Signed-off-by: Quehan <quehan@taobao.com>
TS-2691 Fix how we count redirect retries

TS-2691 Also eliminate api_enable_redirection which seems superfluous
TS-2690 Fixes for escalation plugin

This fixes the following:

1. Change to use the API for following redirects.
2. Make it only replace the "host" portions of a URL
3. Cleanup.
TS-2693 Modify string ownership for TSRedirectUrlSet()
TS-2692 Add an API to Get the current redirection retry count
TS-2707 Migrate TSRedirectUrlSet/Get to TSHttpTxnRedirectUrlSet/Get

1. We leave TSRedirectUrlSet() / Get() as is (as far as functionality
goes). This makes this proposal both API and binary compatible with v4.2.x.

2. We mark them as Deprecated, removing the old API in 6.0.0.

3. We add TSHttpTxnRedirectSet() / Get() , with the new string ownership as
described above. This naming convention is much better aligned with the rest
of our APIs.

I left the URL string lengths as int type for now, we’ll discuss at the Summit
about TS-2514, changing our usage of “int” to more appropriate size_t etc.
TS-2690 Make the escalate plugin support URL and Host redirects

TS-2690 Support multiple status codes for each rule, e.g. 403,404:
TS-2703 Add a text log format to escalate plugin
TS-2678: stop inspecting keep alive state to detect truncation

When the server session breaks, is_http_server_eos_truncation()
tries to determine whether the response was truncated. If it was
truncated, then we need to propagate that to the client, otherwise
we can just continue on.

is_http_server_eos_truncation() was examining the current server
keepalive state to determine truncation, which is really not relevant
at all. In this case, the server sent a HTTP/1.1 response without
a Content-Length header and closes the connection. This should not
be classed as a truncation.
Fix escalate plugin build
TS-2699: Add TSClientProtoStackCreate API

Currently, plugin authors are expected to construct TSClientProtoStack
values by bitshifting them into their correct locations. This is
tedious likely to be error-prone. TSClientProtoStackCreate() accepts
a sequence of TSProtoType values, terminated by a TS_PROTO_NULL.
It combines the values and returns a TSClientProtoStack value that
describes the protocol layering of a client request.
TS-2706: replace the tcp_info plugin config file with options

Managing a configuration file is a lot of pain for a small number
of options. Replace the tcp_info plugin configuration file with
command line options that can be specified in plugin.config. This
also replaces the number is hook mast option with a human-readable
list of hooks where TCP informations whould be logged.
Added a bunch of Jira's to the CHANGES.