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;
 }
 


Reply via email to