diff --git a/Plugins/HTTPSource/HTTPSource.m b/Plugins/HTTPSource/HTTPSource.m index a8652ba4d..3f288653a 100644 --- a/Plugins/HTTPSource/HTTPSource.m +++ b/Plugins/HTTPSource/HTTPSource.m @@ -15,6 +15,7 @@ { _connection = [[HTTPConnection alloc] initWithURL:url]; + // Note: The User-Agent CANNOT contain the string "Mozilla" or Shoutcast/Icecast will serve up HTML NSString *userAgent = [NSString stringWithFormat:@"Cog %@", [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey]]; [_connection setValue:userAgent forRequestHeader:@"User-Agent"]; [_connection setValue:@"close" forRequestHeader:@"Connection"]; diff --git a/Plugins/HTTPSource/Utils/HTTPConnection.m b/Plugins/HTTPSource/Utils/HTTPConnection.m index 43b0f5550..7fdc9efae 100644 --- a/Plugins/HTTPSource/Utils/HTTPConnection.m +++ b/Plugins/HTTPSource/Utils/HTTPConnection.m @@ -85,9 +85,13 @@ } NSInteger lineLength = ((uint8_t *)newLine - (uint8_t *)_buffer); + + // We are using ASCII encoding here because some Icecast servers will insert a random 0xaa or two into the headers NSString *line = [[NSString alloc] initWithBytes:_buffer length:lineLength encoding:NSASCIIStringEncoding]; NSLog(@"Received line: \"%@\"", line); + memmove(_buffer, _buffer + lineLength + 2, _bufferSize - lineLength); // + 2 to skip the newline! + _bufferSize -= lineLength; return [line autorelease];