1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

for bug #241, use heap to alloc the socket buffer.

This commit is contained in:
winlin 2014-12-03 14:27:36 +08:00
parent 6cbf732e1a
commit 2fdf994350
2 changed files with 9 additions and 2 deletions

View file

@ -26,6 +26,12 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_kernel_error.hpp> #include <srs_kernel_error.hpp>
#include <srs_kernel_log.hpp> #include <srs_kernel_log.hpp>
// 4KB=4096
// 8KB=8192
// 16KB=16384
// 32KB=32768
// 64KB=65536
// @see https://github.com/winlinvip/simple-rtmp-server/issues/241
#define SOCKET_READ_SIZE 4096 #define SOCKET_READ_SIZE 4096
ISrsBufferReader::ISrsBufferReader() ISrsBufferReader::ISrsBufferReader()
@ -38,10 +44,12 @@ ISrsBufferReader::~ISrsBufferReader()
SrsBuffer::SrsBuffer() SrsBuffer::SrsBuffer()
{ {
buffer = new char[SOCKET_READ_SIZE];
} }
SrsBuffer::~SrsBuffer() SrsBuffer::~SrsBuffer()
{ {
srs_freep(buffer);
} }
int SrsBuffer::length() int SrsBuffer::length()
@ -88,8 +96,6 @@ int SrsBuffer::grow(ISrsBufferReader* reader, int required_size)
} }
while (length() < required_size) { while (length() < required_size) {
char buffer[SOCKET_READ_SIZE];
ssize_t nread; ssize_t nread;
if ((ret = reader->read(buffer, SOCKET_READ_SIZE, &nread)) != ERROR_SUCCESS) { if ((ret = reader->read(buffer, SOCKET_READ_SIZE, &nread)) != ERROR_SUCCESS) {
return ret; return ret;

View file

@ -53,6 +53,7 @@ class SrsBuffer
{ {
private: private:
std::vector<char> data; std::vector<char> data;
char* buffer;
public: public:
SrsBuffer(); SrsBuffer();
virtual ~SrsBuffer(); virtual ~SrsBuffer();