正在显示
1 个修改的文件
包含
17 行增加
和
12 行删除
| @@ -82,17 +82,21 @@ char* SrsFastBuffer::bytes() | @@ -82,17 +82,21 @@ char* SrsFastBuffer::bytes() | ||
| 82 | 82 | ||
| 83 | void SrsFastBuffer::set_buffer(int buffer_size) | 83 | void SrsFastBuffer::set_buffer(int buffer_size) |
| 84 | { | 84 | { |
| 85 | - // the user-space buffer size limit to a max value. | ||
| 86 | - int nb_resize_buf = srs_min(buffer_size, SRS_MAX_SOCKET_BUFFER); | 85 | + // never exceed the max size. |
| 87 | if (buffer_size > SRS_MAX_SOCKET_BUFFER) { | 86 | if (buffer_size > SRS_MAX_SOCKET_BUFFER) { |
| 88 | - srs_warn("limit the user-space buffer from %d to %d", buffer_size, SRS_MAX_SOCKET_BUFFER); | 87 | + srs_warn("limit the user-space buffer from %d to %d", |
| 88 | + buffer_size, SRS_MAX_SOCKET_BUFFER); | ||
| 89 | } | 89 | } |
| 90 | + | ||
| 91 | + // the user-space buffer size limit to a max value. | ||
| 92 | + int nb_resize_buf = srs_min(buffer_size, SRS_MAX_SOCKET_BUFFER); | ||
| 90 | 93 | ||
| 91 | // only realloc when buffer changed bigger | 94 | // only realloc when buffer changed bigger |
| 92 | if (nb_resize_buf <= nb_buffer) { | 95 | if (nb_resize_buf <= nb_buffer) { |
| 93 | return; | 96 | return; |
| 94 | } | 97 | } |
| 95 | 98 | ||
| 99 | + // realloc for buffer change bigger. | ||
| 96 | int start = p - buffer; | 100 | int start = p - buffer; |
| 97 | int nb_bytes = end - p; | 101 | int nb_bytes = end - p; |
| 98 | 102 | ||
| @@ -148,6 +152,7 @@ int SrsFastBuffer::grow(ISrsBufferReader* reader, int required_size) | @@ -148,6 +152,7 @@ int SrsFastBuffer::grow(ISrsBufferReader* reader, int required_size) | ||
| 148 | srs_assert(nb_exists_bytes >= 0); | 152 | srs_assert(nb_exists_bytes >= 0); |
| 149 | srs_verbose("move fast buffer %d bytes", nb_exists_bytes); | 153 | srs_verbose("move fast buffer %d bytes", nb_exists_bytes); |
| 150 | 154 | ||
| 155 | + // reset or move to get more space. | ||
| 151 | if (!nb_exists_bytes) { | 156 | if (!nb_exists_bytes) { |
| 152 | // reset when buffer is empty. | 157 | // reset when buffer is empty. |
| 153 | p = end = buffer; | 158 | p = end = buffer; |
| @@ -159,15 +164,15 @@ int SrsFastBuffer::grow(ISrsBufferReader* reader, int required_size) | @@ -159,15 +164,15 @@ int SrsFastBuffer::grow(ISrsBufferReader* reader, int required_size) | ||
| 159 | p = buffer; | 164 | p = buffer; |
| 160 | end = p + nb_exists_bytes; | 165 | end = p + nb_exists_bytes; |
| 161 | } | 166 | } |
| 162 | - } | ||
| 163 | - | ||
| 164 | - // check whether enough free space in buffer. | ||
| 165 | - nb_free_space = buffer + nb_buffer - end; | ||
| 166 | - if (nb_free_space < required_size) { | ||
| 167 | - ret = ERROR_READER_BUFFER_OVERFLOW; | ||
| 168 | - srs_error("buffer overflow, required=%d, max=%d, left=%d, ret=%d", | ||
| 169 | - required_size, nb_buffer, nb_free_space, ret); | ||
| 170 | - return ret; | 167 | + |
| 168 | + // check whether enough free space in buffer. | ||
| 169 | + nb_free_space = buffer + nb_buffer - end; | ||
| 170 | + if (nb_free_space < required_size) { | ||
| 171 | + ret = ERROR_READER_BUFFER_OVERFLOW; | ||
| 172 | + srs_error("buffer overflow, required=%d, max=%d, left=%d, ret=%d", | ||
| 173 | + required_size, nb_buffer, nb_free_space, ret); | ||
| 174 | + return ret; | ||
| 175 | + } | ||
| 171 | } | 176 | } |
| 172 | 177 | ||
| 173 | // buffer is ok, read required size of bytes. | 178 | // buffer is ok, read required size of bytes. |
-
请 注册 或 登录 后发表评论