Author: zwoop
Date: Fri Apr 22 17:44:03 2011
New Revision: 1095969
URL: http://svn.apache.org/viewvc?rev=1095969&view=rev
Log:
TS-746 Allow to remove URL fields with "NULL" (or 0) values.
This fixes a problem where even if you tried to set e.g. the
query params to "", the request would include the '?'.
Modified:
trafficserver/traffic/trunk/proxy/InkAPI.cc
trafficserver/traffic/trunk/proxy/hdrs/URL.cc
Modified: trafficserver/traffic/trunk/proxy/InkAPI.cc
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/InkAPI.cc?rev=1095969&r1=1095968&r2=1095969&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/InkAPI.cc (original)
+++ trafficserver/traffic/trunk/proxy/InkAPI.cc Fri Apr 22 17:44:03 2011
@@ -2086,7 +2086,6 @@ URLPartSet(TSMBuffer bufp, TSMLoc obj, c
{
sdk_assert(sdk_sanity_check_mbuffer(bufp) == TS_SUCCESS);
sdk_assert(sdk_sanity_check_url_handle(obj) == TS_SUCCESS);
- sdk_assert(sdk_sanity_check_null_ptr((void*)value) == TS_SUCCESS);
if (!isWriteable(bufp))
return TS_ERROR;
@@ -2095,10 +2094,12 @@ URLPartSet(TSMBuffer bufp, TSMLoc obj, c
u.m_heap = ((HdrHeapSDKHandle *) bufp)->m_heap;
u.m_url_impl = (URLImpl *) obj;
- if (length < 0)
+ if (!value)
+ length = 0;
+ else if (length < 0)
length = strlen(value);
+ (u.*url_f)(value, length);
- (u.*url_f) (value, length);
return TS_SUCCESS;
}
@@ -2171,7 +2172,7 @@ TSUrlPortSet(TSMBuffer bufp, TSMLoc obj,
sdk_assert(sdk_sanity_check_mbuffer(bufp) == TS_SUCCESS);
sdk_assert(sdk_sanity_check_url_handle(obj) == TS_SUCCESS);
- if (!isWriteable(bufp) || (port <= 0))
+ if (!isWriteable(bufp) || (port < 0))
return TS_ERROR;
URL u;
Modified: trafficserver/traffic/trunk/proxy/hdrs/URL.cc
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/hdrs/URL.cc?rev=1095969&r1=1095968&r2=1095969&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/hdrs/URL.cc (original)
+++ trafficserver/traffic/trunk/proxy/hdrs/URL.cc Fri Apr 22 17:44:03 2011
@@ -452,12 +452,16 @@ url_port_set(HdrHeap * heap, URLImpl * u
void
url_port_set(HdrHeap * heap, URLImpl * url, unsigned int port)
{
- char value[6];
- int length;
-
url_called_set(url);
- length = ink_fast_itoa(port, value, sizeof(value));
- mime_str_u16_set(heap, value, length, &(url->m_ptr_port),
&(url->m_len_port), true);
+ if (port > 0) {
+ char value[6];
+ int length;
+
+ length = ink_fast_itoa(port, value, sizeof(value));
+ mime_str_u16_set(heap, value, length, &(url->m_ptr_port),
&(url->m_len_port), true);
+ } else {
+ mime_str_u16_set(heap, NULL, 0, &(url->m_ptr_port), &(url->m_len_port),
true);
+ }
url->m_port = port;
}