This bug leads to sound artefacts at the beginning of the
stream caused by calling recv_pattern() with a buffer size
larger than the HTTP OK message.
It may thus happen that the buffer used by recv_pattern() contains
not only the HTTP OK message but also the beginning of the stream.
Since that buffer is discarded by recv_pattern(), the first few
bytes of the stream are lost if this happens.
Fix it by passing the exact length of the HTTP OK message to
recv_pattern().
if (!FD_ISSET(phd->fd, &s->rfds))
return;
if (phd->status == HTTP_SENT_GET_REQUEST) {
- t->error = recv_pattern(phd->fd, HTTP_OK_MSG, MAXLINE);
+ t->error = recv_pattern(phd->fd, HTTP_OK_MSG, strlen(HTTP_OK_MSG));
if (t->error >= 0) {
PARA_INFO_LOG("received ok msg, streaming\n");
phd->status = HTTP_STREAMING;