You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ni...@apache.org on 2011/12/20 13:34:42 UTC
svn commit: r1221229 - in /trafficserver/traffic/trunk: CHANGES
proxy/hdrs/URL.cc proxy/hdrs/URL.h
Author: niq
Date: Tue Dec 20 12:34:42 2011
New Revision: 1221229
URL: http://svn.apache.org/viewvc?rev=1221229&view=rev
Log:
TS-998: Distinguish between normal URLs and proxy URLs containing routing info.
Comment: I tried numerous ways to get the URL data more directly rather
than reconstruct it. Those approaches were able to fix the original
problem but had side-effects. This fix is a line of least resistance.
Modified:
trafficserver/traffic/trunk/CHANGES
trafficserver/traffic/trunk/proxy/hdrs/URL.cc
trafficserver/traffic/trunk/proxy/hdrs/URL.h
Modified: trafficserver/traffic/trunk/CHANGES
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/CHANGES?rev=1221229&r1=1221228&r2=1221229&view=diff
==============================================================================
--- trafficserver/traffic/trunk/CHANGES (original)
+++ trafficserver/traffic/trunk/CHANGES Tue Dec 20 12:34:42 2011
@@ -25,6 +25,8 @@ Changes with Apache Traffic Server 3.1.2
*) [TS-1022] Use size specific types for serialized data in binary logs.
+ *) [TS-998] Distinguish normal URLs from proxy URLs containing routing info.
+
Changes with Apache Traffic Server 3.1.1
*) [TS-1020] Make logging to a named pipe work on Solaris.
Modified: trafficserver/traffic/trunk/proxy/hdrs/URL.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/hdrs/URL.cc?rev=1221229&r1=1221228&r2=1221229&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/hdrs/URL.cc (original)
+++ trafficserver/traffic/trunk/proxy/hdrs/URL.cc Tue Dec 20 12:34:42 2011
@@ -1061,6 +1061,8 @@ url_parse(HdrHeap * heap, URLImpl * url,
cur = *start;
+ url->is_normal = (*cur == '/');
+
skip_ws:
if (ParseRules::is_ws(*cur)) {
GETNEXT(eof);
@@ -1531,34 +1533,36 @@ url_print(URLImpl * url, char *buf_start
{
#define TRY(x) if (!x) return 0
- if (url->m_ptr_scheme) {
- TRY(mime_mem_print(url->m_ptr_scheme, url->m_len_scheme,
- buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
- if ((url->m_scheme_wks_idx >= 0) && (hdrtoken_index_to_wks(url->m_scheme_wks_idx) == URL_SCHEME_FILE)) {
- TRY(mime_mem_print(":", 1, buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
- } else {
- TRY(mime_mem_print("://", 3, buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
+ if (!url_is_normal) { /* URL is proxyreq containing routing components */
+ if (url->m_ptr_scheme) {
+ TRY(mime_mem_print(url->m_ptr_scheme, url->m_len_scheme,
+ buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
+ if ((url->m_scheme_wks_idx >= 0) && (hdrtoken_index_to_wks(url->m_scheme_wks_idx) == URL_SCHEME_FILE)) {
+ TRY(mime_mem_print(":", 1, buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
+ } else {
+ TRY(mime_mem_print("://", 3, buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
+ }
}
- }
- if (url->m_ptr_user) {
- TRY(mime_mem_print(url->m_ptr_user, url->m_len_user,
- buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
- if (url->m_ptr_password) {
- TRY(mime_mem_print(":", 1, buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
- TRY(mime_mem_print(url->m_ptr_password, url->m_len_password,
+ if (url->m_ptr_user) {
+ TRY(mime_mem_print(url->m_ptr_user, url->m_len_user,
buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
+ if (url->m_ptr_password) {
+ TRY(mime_mem_print(":", 1, buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
+ TRY(mime_mem_print(url->m_ptr_password, url->m_len_password,
+ buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
+ }
+ TRY(mime_mem_print("@", 1, buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
}
- TRY(mime_mem_print("@", 1, buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
- }
- if (url->m_ptr_host) {
- TRY(mime_mem_print(url->m_ptr_host, url->m_len_host,
- buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
- if (url->m_ptr_port && url->m_port) {
- TRY(mime_mem_print(":", 1, buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
- TRY(mime_mem_print(url->m_ptr_port, url->m_len_port,
+ if (url->m_ptr_host) {
+ TRY(mime_mem_print(url->m_ptr_host, url->m_len_host,
buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
+ if (url->m_ptr_port && url->m_port) {
+ TRY(mime_mem_print(":", 1, buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
+ TRY(mime_mem_print(url->m_ptr_port, url->m_len_port,
+ buf_start, buf_length, buf_index_inout, buf_chars_to_skip_inout));
+ }
}
}
Modified: trafficserver/traffic/trunk/proxy/hdrs/URL.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/hdrs/URL.h?rev=1221229&r1=1221228&r2=1221229&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/hdrs/URL.h (original)
+++ trafficserver/traffic/trunk/proxy/hdrs/URL.h Tue Dec 20 12:34:42 2011
@@ -83,6 +83,9 @@ struct URLImpl:public HdrHeapObjImpl
// Sanity Check Functions
void check_strings(HeapCheck *heaps, int num_heaps);
+
+ // Is this a normal or a (forward) proxy request?
+ bool is_normal;
};