summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschmirl <schmirl>2010-07-22 14:18:36 +0000
committerschmirl <schmirl>2010-07-22 14:18:36 +0000
commitdb3274c046f4e2d44cb8263428073b6a43dca2fa (patch)
treee223d991111c2360952293529fd93d30017595e4
parentb2f30affa911e69ec3649d661e70b72d0b33e2ae (diff)
downloadvdr-plugin-streamdev-db3274c046f4e2d44cb8263428073b6a43dca2fa.tar.gz
vdr-plugin-streamdev-db3274c046f4e2d44cb8263428073b6a43dca2fa.tar.bz2
don't use std::map.at(). It's not available in older libstdc++ version
Modified Files: Tag: v0_4 CONTRIBUTORS HISTORY remux/extern.c server/connectionHTTP.c
-rw-r--r--CONTRIBUTORS3
-rw-r--r--HISTORY2
-rw-r--r--remux/extern.c5
-rw-r--r--server/connectionHTTP.c14
4 files changed, 19 insertions, 5 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 10bb2f1..54757c3 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -132,3 +132,6 @@ Norman Thiel
vel_tins
for reporting that externremux x264 uses value of ABR for VBR
+
+Matthias Prill
+ for reporting a compiler error with older libstdc++ versions
diff --git a/HISTORY b/HISTORY
index ad4f134..7624838 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,6 +1,8 @@
VDR Plugin 'streamdev' Revision History
---------------------------------------
+- don't use std::map.at(). It's not available in older libstdc++ version
+ (reported by Matthias Prill)
- fixed extremux x264 using value of ABR for VBR (thanks to vel_tins@vdrportal)
2010-07-20: Version 0.4.0b
diff --git a/remux/extern.c b/remux/extern.c
index ce76883..d66dc0a 100644
--- a/remux/extern.c
+++ b/remux/extern.c
@@ -151,7 +151,10 @@ cTSExt::cTSExt(cRingBufferLinear *ResultBuffer, const cServerConnection *Connect
// look for section parameters: /path;param1=value1;param2=value2/
std::string::size_type begin, end;
- std::string path = Connection->Headers().at("PATH_INFO");
+ const static std::string PATH_INFO("PATH_INFO");
+
+ tStrStrMap::const_iterator it_pathinfo = Connection->Headers().find(PATH_INFO);
+ const std::string& path = it_pathinfo == Connection->Headers().end() ? "/" : it_pathinfo->second;
begin = path.find(';', 0);
begin = path.find_first_not_of(';', begin);
end = path.find_first_of(";/", begin);
diff --git a/server/connectionHTTP.c b/server/connectionHTTP.c
index 7e9766c..72a72c0 100644
--- a/server/connectionHTTP.c
+++ b/server/connectionHTTP.c
@@ -1,5 +1,5 @@
/*
- * $Id: connectionHTTP.c,v 1.13.2.4 2010/07/20 12:26:10 schmirl Exp $
+ * $Id: connectionHTTP.c,v 1.13.2.5 2010/07/22 14:18:36 schmirl Exp $
*/
#include <ctype.h>
@@ -140,7 +140,12 @@ bool cConnectionHTTP::ProcessRequest(void)
}
}
- if (Headers().at(REQUEST_METHOD).compare("GET") == 0 && ProcessURI(Headers().at(PATH_INFO))) {
+ tStrStrMap::const_iterator it_method = Headers().find(REQUEST_METHOD);
+ tStrStrMap::const_iterator it_pathinfo = Headers().find(PATH_INFO);
+ if (it_method == Headers().end() || it_pathinfo == Headers().end()) {
+ // should never happen
+ esyslog("streamdev-server connectionHTTP: Missing method or pathinfo");
+ } else if (it_method->second.compare("GET") == 0 && ProcessURI(it_pathinfo->second)) {
if (m_ChannelList)
return Respond("%s", true, m_ChannelList->HttpHeader().c_str());
else if (m_Channel != NULL) {
@@ -176,7 +181,7 @@ bool cConnectionHTTP::ProcessRequest(void)
return Respond("HTTP/1.0 404 not found")
&& Respond("");
}
- } else if (Headers().at(REQUEST_METHOD).compare("HEAD") == 0 && ProcessURI(Headers().at(PATH_INFO))) {
+ } else if (it_method->second.compare("HEAD") == 0 && ProcessURI(it_pathinfo->second)) {
DeferClose();
if (m_ChannelList)
return Respond("%s", true, m_ChannelList->HttpHeader().c_str());
@@ -249,7 +254,8 @@ cChannelList* cConnectionHTTP::ChannelListFromString(const std::string& Path, co
const static std::string QUERY_STRING("QUERY_STRING");
const static std::string HOST("HTTP_HOST");
- const std::string query = Headers().at(QUERY_STRING);
+ tStrStrMap::const_iterator it_query = Headers().find(QUERY_STRING);
+ const std::string& query = it_query == Headers().end() ? "" : it_query->second;
std::string groupTarget;
cChannelIterator *iterator = NULL;