| 251 | } |
| 252 | |
| 253 | static size_t SerializeH2SettingsFrameAndWU(const H2Settings& in, void* out) { |
| 254 | uint8_t* p = (uint8_t*)out; |
| 255 | size_t nb = SerializeH2Settings(in, p + FRAME_HEAD_SIZE); |
| 256 | SerializeFrameHead(p, nb, H2_FRAME_SETTINGS, 0, 0); |
| 257 | p += FRAME_HEAD_SIZE + nb; |
| 258 | if (in.connection_window_size > H2Settings::DEFAULT_INITIAL_WINDOW_SIZE) { |
| 259 | SerializeFrameHead(p, 4, H2_FRAME_WINDOW_UPDATE, 0, 0); |
| 260 | SaveUint32(p + FRAME_HEAD_SIZE, |
| 261 | in.connection_window_size - H2Settings::DEFAULT_INITIAL_WINDOW_SIZE); |
| 262 | p += FRAME_HEAD_SIZE + 4; |
| 263 | } |
| 264 | return static_cast<size_t>(p - (uint8_t*)out); |
| 265 | } |
| 266 | |
| 267 | inline bool AddWindowSize(butil::atomic<int64_t>* window_size, int64_t diff) { |
| 268 | // A sender MUST NOT allow a flow-control window to exceed 2^31 - 1. |
no test coverage detected