aboutsummaryrefslogtreecommitdiffstats
path: root/package
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2007-09-11 17:34:52 +0000
committerJohn Crispin <john@openwrt.org>2007-09-11 17:34:52 +0000
commit9bf211bb9027e2f87ba56e415cae7cef228e9652 (patch)
tree55836616ead47e679627809bb2a514202a309170 /package
parent6ce13a764fac568dcd179025c2a6eff551f2f085 (diff)
downloadupstream-9bf211bb9027e2f87ba56e415cae7cef228e9652.tar.gz
upstream-9bf211bb9027e2f87ba56e415cae7cef228e9652.tar.bz2
upstream-9bf211bb9027e2f87ba56e415cae7cef228e9652.zip
fixes bug that causes mp3 stream to hang is server is not fast enough
SVN-Revision: 8754
Diffstat (limited to 'package')
-rw-r--r--package/fonera-mp3/src/lib/mp3_stream.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/package/fonera-mp3/src/lib/mp3_stream.c b/package/fonera-mp3/src/lib/mp3_stream.c
index 0dd3437e3b..f6f214a990 100644
--- a/package/fonera-mp3/src/lib/mp3_stream.c
+++ b/package/fonera-mp3/src/lib/mp3_stream.c
@@ -173,15 +173,15 @@ int mp3_stream_setup(unsigned char *url, unsigned int type, unsigned char *ip,
ip);
printf("Sending request :\n%s\n", icy_request);
send(mp3_stream.sockfd, icy_request, strlen(icy_request), 0);
- //wait 200 ms ??!? some icecast servers seem to not push data to us fast enough ?!?!?
- poll(0,0,200);
- if ((mp3_stream.numbytes=recv(mp3_stream.sockfd, mp3_stream.buf, MAX_PACKET_SIZE-1, 0)) == -1) {
- perror("recv");
- return MP3_ERROR;
+ mp3_stream.numbytes = 0;
+ while(mp3_stream.numbytes < MAX_PACKET_SIZE-1) {
+ if ((mp3_stream.numbytes += recv(mp3_stream.sockfd, &mp3_stream.buf[mp3_stream.numbytes], MAX_PACKET_SIZE - 1 - mp3_stream.numbytes, 0)) == -1) {
+ perror("recv");
+ return MP3_ERROR;
+ }
}
mp3_stream.buf[mp3_stream.numbytes] = '\0';
printf("numbytes = %d\n", mp3_stream.numbytes);
- printf("------\n%s\n---------\n", mp3_stream.buf);
unsigned char *p = strstr(mp3_stream.buf, "\r\n\r\n");
if(p) {
*p = '\0';