streamts: don't overflow receive buffer, better diag message

This commit is contained in:
Stefan Seyfried
2017-02-12 16:56:10 +01:00
committed by svenhoefer
parent 7384e2155e
commit ff0d98bcc3

View File

@@ -369,9 +369,11 @@ bool CStreamManager::Parse(int fd, stream_pids_t &pids, t_channel_id &chid, CFro
bp = &cbuf[0];
/* read one line */
while (bp - &cbuf[0] < (int) sizeof(cbuf)) {
while (bp - &cbuf[0] < (int) sizeof(cbuf) - 1) {
unsigned char c;
int res = read(fd, &c, 1);
if (res == 0)
break;
if (res < 0) {
perror("read");
return false;
@@ -379,12 +381,11 @@ bool CStreamManager::Parse(int fd, stream_pids_t &pids, t_channel_id &chid, CFro
if ((*bp++ = c) == '\n')
break;
}
*bp = 0;
*bp++ = 0;
printf("CStreamManager::Parse: got %d bytes '%s'", (int)(bp-&cbuf[0]), cbuf);
bp = &cbuf[0];
printf("CStreamManager::Parse: got %s\n", cbuf);
/* send response to http client */
if (!strncmp(cbuf, "GET /", 5)) {
fprintf(fp, "HTTP/1.1 200 OK\r\nServer: streamts (%s)\r\n\r\n", "ts" /*&argv[1][1]*/);