| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/spdy/spdy_framer.h" | 5 #include "net/spdy/spdy_framer.h" |
| 6 | 6 |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <iterator> | 10 #include <iterator> |
| (...skipping 1156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1167 size_t total_length = num_name_value_pairs_size; | 1167 size_t total_length = num_name_value_pairs_size; |
| 1168 for (const auto& header : *headers) { | 1168 for (const auto& header : *headers) { |
| 1169 // We add space for the length of the name and the length of the value as | 1169 // We add space for the length of the name and the length of the value as |
| 1170 // well as the length of the name and the length of the value. | 1170 // well as the length of the name and the length of the value. |
| 1171 total_length += length_of_name_size + header.first.size() + | 1171 total_length += length_of_name_size + header.first.size() + |
| 1172 length_of_value_size + header.second.size(); | 1172 length_of_value_size + header.second.size(); |
| 1173 } | 1173 } |
| 1174 return total_length; | 1174 return total_length; |
| 1175 } | 1175 } |
| 1176 | 1176 |
| 1177 void SpdyFramer::WriteHeaderBlock(SpdyFrameBuilder* frame, | |
| 1178 const SpdyMajorVersion spdy_version, | |
| 1179 const SpdyHeaderBlock* headers) { | |
| 1180 frame->WriteUInt32(headers->size()); | |
| 1181 SpdyHeaderBlock::const_iterator it; | |
| 1182 for (it = headers->begin(); it != headers->end(); ++it) { | |
| 1183 frame->WriteStringPiece32(it->first); | |
| 1184 frame->WriteStringPiece32(it->second); | |
| 1185 } | |
| 1186 } | |
| 1187 | |
| 1188 // TODO(phajdan.jr): Clean up after we no longer need | 1177 // TODO(phajdan.jr): Clean up after we no longer need |
| 1189 // to workaround http://crbug.com/139744. | 1178 // to workaround http://crbug.com/139744. |
| 1190 #if !defined(USE_SYSTEM_ZLIB) | 1179 #if !defined(USE_SYSTEM_ZLIB) |
| 1191 | 1180 |
| 1192 // These constants are used by zlib to differentiate between normal data and | 1181 // These constants are used by zlib to differentiate between normal data and |
| 1193 // cookie data. Cookie data is handled specially by zlib when compressing. | 1182 // cookie data. Cookie data is handled specially by zlib when compressing. |
| 1194 enum ZDataClass { | 1183 enum ZDataClass { |
| 1195 // kZStandardData is compressed normally, save that it will never match | 1184 // kZStandardData is compressed normally, save that it will never match |
| 1196 // against any other class of data in the window. | 1185 // against any other class of data in the window. |
| 1197 kZStandardData = Z_CLASS_STANDARD, | 1186 kZStandardData = Z_CLASS_STANDARD, |
| (...skipping 1939 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3137 #else | 3126 #else |
| 3138 WriteHeaderBlockToZ(&frame.header_block(), compressor); | 3127 WriteHeaderBlockToZ(&frame.header_block(), compressor); |
| 3139 #endif // defined(USE_SYSTEM_ZLIB) | 3128 #endif // defined(USE_SYSTEM_ZLIB) |
| 3140 | 3129 |
| 3141 int compressed_size = compressed_max_size - compressor->avail_out; | 3130 int compressed_size = compressed_max_size - compressor->avail_out; |
| 3142 builder->Seek(compressed_size); | 3131 builder->Seek(compressed_size); |
| 3143 builder->RewriteLength(*this); | 3132 builder->RewriteLength(*this); |
| 3144 } | 3133 } |
| 3145 | 3134 |
| 3146 } // namespace net | 3135 } // namespace net |
| OLD | NEW |