Merge pull request #1952 from esdrubal/proc_name
[mono.git] / mcs / class / System.Net.Http / System.Net.Http.Headers / HttpHeaders.cs
index 9a7248582a1a0ff88cb46cc9df3410785acc4551..05b5fe62681f3f981b067777d1cb7a7f9f32a03b 100644 (file)
@@ -343,29 +343,40 @@ namespace System.Net.Http.Headers
                        return true;
                }
 
-               public override string ToString ()
+               internal static string GetSingleHeaderString (string key, IEnumerable<string> values)
                {
+                       string separator = ",";
+                       HeaderInfo headerInfo;
+                       if (known_headers.TryGetValue (key, out headerInfo) && headerInfo.AllowsMany)
+                               separator = headerInfo.Separator;
+
                        var sb = new StringBuilder ();
-                       foreach (var entry in this) {
-                               sb.Append (entry.Key);
-                               sb.Append (": ");
+                       bool first = true;
+                       foreach (var v in values) {
+                               if (!first) {
+                                       sb.Append (separator);
+                                       if (separator != " ")
+                                               sb.Append (" ");
+                               }
 
-                               string separator = ",";
-                               HeaderInfo headerInfo;
-                               if (known_headers.TryGetValue (entry.Key, out headerInfo) && headerInfo.AllowsMany)
-                                       separator = headerInfo.Separator;
+                               sb.Append (v);
+                               first = false;
+                       }
 
-                               bool first = true;
-                               foreach (var v in entry.Value) {
-                                       if (!first) {
-                                               sb.Append (separator);
-                                               sb.Append (" ");
-                                       }
+                       // Return null for empty values list
+                       if (first)
+                               return null;
 
-                                       sb.Append (v);
-                                       first = false;
-                               }
+                       return sb.ToString ();
+               }
 
+               public override string ToString ()
+               {
+                       var sb = new StringBuilder ();
+                       foreach (var entry in this) {
+                               sb.Append (entry.Key);
+                               sb.Append (": ");
+                               sb.Append (GetSingleHeaderString (entry.Key, entry.Value));
                                sb.Append ("\r\n");
                        }
 
@@ -489,7 +500,7 @@ namespace System.Net.Http.Headers
                        return (HttpHeaderValueCollection<T>) value.Parsed;
                }
 
-               void SetValue<T> (string name, T value, Func<object, string> toStringConverter = null)
+               internal void SetValue<T> (string name, T value, Func<object, string> toStringConverter = null)
                {
                        headers[name] = new HeaderBucket (value, toStringConverter);
                }