Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(631)

Side by Side Diff: net/base/net_util.cc

Issue 7029049: Merge 84251, 85083, 85188, 85375. (Closed) Base URL: svn://svn.chromium.org/chrome/branches/742/src/
Patch Set: Upload before checkin Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/base/net_util.h ('k') | net/socket/transport_client_socket_pool.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/base/net_util.h" 5 #include "net/base/net_util.h"
6 6
7 #include <unicode/regex.h> 7 #include <unicode/regex.h>
8 #include <unicode/ucnv.h> 8 #include <unicode/ucnv.h>
9 #include <unicode/uidna.h> 9 #include <unicode/uidna.h>
10 #include <unicode/ulocdata.h> 10 #include <unicode/ulocdata.h>
(...skipping 1102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1113 // Adjust new_parsed. 1113 // Adjust new_parsed.
1114 DCHECK(new_parsed->scheme.is_valid()); 1114 DCHECK(new_parsed->scheme.is_valid());
1115 int delta = -(new_parsed->scheme.len + 3); // +3 for ://. 1115 int delta = -(new_parsed->scheme.len + 3); // +3 for ://.
1116 new_parsed->scheme.reset(); 1116 new_parsed->scheme.reset();
1117 AdjustComponents(delta, new_parsed); 1117 AdjustComponents(delta, new_parsed);
1118 } 1118 }
1119 1119
1120 return url_string; 1120 return url_string;
1121 } 1121 }
1122 1122
1123 char* do_strdup(const char* src) {
1124 #if defined(OS_WIN)
1125 return _strdup(src);
1126 #else
1127 return strdup(src);
1128 #endif
1129 }
1130
1123 } // namespace 1131 } // namespace
1124 1132
1125 const FormatUrlType kFormatUrlOmitNothing = 0; 1133 const FormatUrlType kFormatUrlOmitNothing = 0;
1126 const FormatUrlType kFormatUrlOmitUsernamePassword = 1 << 0; 1134 const FormatUrlType kFormatUrlOmitUsernamePassword = 1 << 0;
1127 const FormatUrlType kFormatUrlOmitHTTP = 1 << 1; 1135 const FormatUrlType kFormatUrlOmitHTTP = 1 << 1;
1128 const FormatUrlType kFormatUrlOmitTrailingSlashOnBareHostname = 1 << 2; 1136 const FormatUrlType kFormatUrlOmitTrailingSlashOnBareHostname = 1 << 2;
1129 const FormatUrlType kFormatUrlOmitAll = kFormatUrlOmitUsernamePassword | 1137 const FormatUrlType kFormatUrlOmitAll = kFormatUrlOmitUsernamePassword |
1130 kFormatUrlOmitHTTP | kFormatUrlOmitTrailingSlashOnBareHostname; 1138 kFormatUrlOmitHTTP | kFormatUrlOmitTrailingSlashOnBareHostname;
1131 1139
1132 // TODO(viettrungluu): We don't want non-POD globals; change this. 1140 // TODO(viettrungluu): We don't want non-POD globals; change this.
(...skipping 1042 matching lines...) Expand 10 before | Expand all | Expand 10 after
2175 if (remaining_bits != 0) { 2183 if (remaining_bits != 0) {
2176 unsigned char mask = 0xFF << (8 - remaining_bits); 2184 unsigned char mask = 0xFF << (8 - remaining_bits);
2177 int i = num_entire_bytes_in_prefix; 2185 int i = num_entire_bytes_in_prefix;
2178 if ((ip_number[i] & mask) != (ip_prefix[i] & mask)) 2186 if ((ip_number[i] & mask) != (ip_prefix[i] & mask))
2179 return false; 2187 return false;
2180 } 2188 }
2181 2189
2182 return true; 2190 return true;
2183 } 2191 }
2184 2192
2193 struct addrinfo* CreateCopyOfAddrinfo(const struct addrinfo* info,
2194 bool recursive) {
2195 DCHECK(info);
2196 struct addrinfo* copy = new addrinfo;
2197
2198 // Copy all the fields (some of these are pointers, we will fix that next).
2199 memcpy(copy, info, sizeof(addrinfo));
2200
2201 // ai_canonname is a NULL-terminated string.
2202 if (info->ai_canonname) {
2203 copy->ai_canonname = do_strdup(info->ai_canonname);
2204 }
2205
2206 // ai_addr is a buffer of length ai_addrlen.
2207 if (info->ai_addr) {
2208 copy->ai_addr = reinterpret_cast<sockaddr *>(new char[info->ai_addrlen]);
2209 memcpy(copy->ai_addr, info->ai_addr, info->ai_addrlen);
2210 }
2211
2212 // Recursive copy.
2213 if (recursive && info->ai_next)
2214 copy->ai_next = CreateCopyOfAddrinfo(info->ai_next, recursive);
2215 else
2216 copy->ai_next = NULL;
2217
2218 return copy;
2219 }
2220
2221 void FreeCopyOfAddrinfo(struct addrinfo* info) {
2222 DCHECK(info);
2223 if (info->ai_canonname)
2224 free(info->ai_canonname); // Allocated by strdup.
2225
2226 if (info->ai_addr)
2227 delete [] reinterpret_cast<char*>(info->ai_addr);
2228
2229 struct addrinfo* next = info->ai_next;
2230
2231 delete info;
2232
2233 // Recursive free.
2234 if (next)
2235 FreeCopyOfAddrinfo(next);
2236 }
2237
2185 // Returns the port field of the sockaddr in |info|. 2238 // Returns the port field of the sockaddr in |info|.
2186 uint16* GetPortFieldFromAddrinfo(struct addrinfo* info) { 2239 uint16* GetPortFieldFromAddrinfo(struct addrinfo* info) {
2187 const struct addrinfo* const_info = info; 2240 const struct addrinfo* const_info = info;
2188 const uint16* port_field = GetPortFieldFromAddrinfo(const_info); 2241 const uint16* port_field = GetPortFieldFromAddrinfo(const_info);
2189 return const_cast<uint16*>(port_field); 2242 return const_cast<uint16*>(port_field);
2190 } 2243 }
2191 2244
2192 const uint16* GetPortFieldFromAddrinfo(const struct addrinfo* info) { 2245 const uint16* GetPortFieldFromAddrinfo(const struct addrinfo* info) {
2193 DCHECK(info); 2246 DCHECK(info);
2194 const struct sockaddr* address = info->ai_addr; 2247 const struct sockaddr* address = info->ai_addr;
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
2276 2329
2277 ClampComponentOffset::ClampComponentOffset(size_t component_start) 2330 ClampComponentOffset::ClampComponentOffset(size_t component_start)
2278 : component_start(component_start) {} 2331 : component_start(component_start) {}
2279 2332
2280 size_t ClampComponentOffset::operator()(size_t offset) { 2333 size_t ClampComponentOffset::operator()(size_t offset) {
2281 return (offset >= component_start) ? 2334 return (offset >= component_start) ?
2282 offset : std::wstring::npos; 2335 offset : std::wstring::npos;
2283 } 2336 }
2284 2337
2285 } // namespace net 2338 } // namespace net
OLDNEW
« no previous file with comments | « net/base/net_util.h ('k') | net/socket/transport_client_socket_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698