1
0
mirror of https://github.com/rofafor/vdr-plugin-iptv.git synced 2023-10-10 13:37:03 +02:00

Fixed handling of HTTP protocol headers.

This commit is contained in:
Rolf Ahrenberg 2009-06-17 16:07:58 +03:00
parent abfa46c064
commit a32cb95960
5 changed files with 23 additions and 4 deletions

View File

@ -108,3 +108,9 @@ VDR Plugin 'iptv' Revision History
(Thanks to Peter Holik for reporting this one). (Thanks to Peter Holik for reporting this one).
- Updated example scripts to use ffmpeg's direct UDP output - Updated example scripts to use ffmpeg's direct UDP output
and added a new "image.sh" script (Thanks to Peter Holik). and added a new "image.sh" script (Thanks to Peter Holik).
2009-xx-xx: Version 0.3.1
- Updated patches.
- Added optional patches to disable EIT scanning.
- Fixed handling of HTTP protocol headers.

2
iptv.c
View File

@ -20,7 +20,7 @@
#error "VDR-1.6.0 API version or greater is required!" #error "VDR-1.6.0 API version or greater is required!"
#endif #endif
static const char VERSION[] = "0.3.0"; static const char VERSION[] = "0.3.1";
static const char DESCRIPTION[] = trNOOP("Experience the IPTV"); static const char DESCRIPTION[] = trNOOP("Experience the IPTV");
class cPluginIptv : public cPlugin { class cPluginIptv : public cPlugin {

View File

@ -0,0 +1,12 @@
diff -Nru vdr-1.6.0-vanilla/eitscan.c vdr-1.6.0-disable_eitscan/eitscan.c
--- vdr-1.6.0-vanilla/eitscan.c 2006-01-07 16:10:17.000000000 +0200
+++ vdr-1.6.0-disable_eitscan/eitscan.c 2009-06-17 16:04:23.000000000 +0300
@@ -146,7 +146,7 @@
if (Device) {
for (cScanData *ScanData = scanList->First(); ScanData; ScanData = scanList->Next(ScanData)) {
const cChannel *Channel = ScanData->GetChannel();
- if (Channel) {
+ if (Channel && !Channel->IsPlug()) {
if (!Channel->Ca() || Channel->Ca() == Device->DeviceNumber() + 1 || Channel->Ca() >= CA_ENCRYPTED_MIN) {
if (Device->ProvidesTransponder(Channel)) {
if (!Device->Receiving()) {

View File

@ -127,7 +127,7 @@ bool cIptvProtocolHttp::GetHeaderLine(char* dest, unsigned int destLen,
debug("cIptvProtocolHttp::GetHeaderLine()\n"); debug("cIptvProtocolHttp::GetHeaderLine()\n");
bool linefeed = false; bool linefeed = false;
bool newline = false; bool newline = false;
char buf[256]; char buf[4096];
char *bufptr = buf; char *bufptr = buf;
memset(buf, '\0', sizeof(buf)); memset(buf, '\0', sizeof(buf));
recvLen = 0; recvLen = 0;
@ -160,6 +160,7 @@ bool cIptvProtocolHttp::GetHeaderLine(char* dest, unsigned int destLen,
// Check that buffers won't be exceeded // Check that buffers won't be exceeded
if (recvLen >= sizeof(buf) || recvLen >= destLen) { if (recvLen >= sizeof(buf) || recvLen >= destLen) {
error("Header wouldn't fit into buffer\n"); error("Header wouldn't fit into buffer\n");
recvLen = 0;
return false; return false;
} }
} }
@ -178,13 +179,13 @@ bool cIptvProtocolHttp::ProcessHeaders(void)
unsigned int lineLength = 0; unsigned int lineLength = 0;
int response = 0; int response = 0;
bool responseFound = false; bool responseFound = false;
char buf[256]; char buf[4096];
while (!responseFound || lineLength != 0) { while (!responseFound || lineLength != 0) {
memset(buf, '\0', sizeof(buf)); memset(buf, '\0', sizeof(buf));
if (!GetHeaderLine(buf, sizeof(buf), lineLength)) if (!GetHeaderLine(buf, sizeof(buf), lineLength))
return false; return false;
if (!responseFound && sscanf(buf, "HTTP/1.%*i %i ",&response) != 1) { if (!responseFound && sscanf(buf, "HTTP/1.%*i %i ", &response) != 1) {
error("Expected HTTP header not found\n"); error("Expected HTTP header not found\n");
continue; continue;
} }