From 67e5816cb2bb52b93abe76e7c2aeaff6f11458c4 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Mon, 21 Mar 2011 01:03:30 +0100 Subject: [PATCH] Random edits --- Connector_HTTP/main.cpp | 121 ++++++++++++++++++---------------------- 1 file changed, 55 insertions(+), 66 deletions(-) diff --git a/Connector_HTTP/main.cpp b/Connector_HTTP/main.cpp index 61bde8ce..256804b3 100644 --- a/Connector_HTTP/main.cpp +++ b/Connector_HTTP/main.cpp @@ -155,73 +155,62 @@ int mainHandler(int CONN_fd){ while (!socketError && !All_Hell_Broke_Loose){ //only parse input if available or not yet init'ed - retval = epoll_wait(poller, events, 1, 1); - if ((retval > 0) || !ready4data){ - if (HTTP_R.ReadSocket(CONN_fd)){ - handler = HANDLER_PROGRESSIVE; - if ((HTTP_R.url.find("Seg") != std::string::npos) && (HTTP_R.url.find("Frag") != std::string::npos)){handler = HANDLER_FLASH;} - if (HTTP_R.url.find("f4m") != std::string::npos){handler = HANDLER_FLASH;} - if (HTTP_R.url == "/crossdomain.xml"){ - handler = HANDLER_NONE; - HTTP_S.Clean(); - HTTP_S.SetHeader("Content-Type", "text/xml"); - HTTP_S.SetBody(""); - HTTP_S.SendResponse(CONN_fd, "200", "OK");//geen SetBody = unknown length! Dat willen we hier. - #if DEBUG >= 3 - printf("Sending crossdomain.xml file\n"); - #endif - } - if(handler == HANDLER_FLASH){ - if (HTTP_R.url.find("f4m") == std::string::npos){ - Movie = HTTP_R.url.substr(1); - Movie = Movie.substr(0,Movie.find("/")); - Quality = HTTP_R.url.substr( HTTP_R.url.find("/",1)+1 ); - Quality = Quality.substr(0, Quality.find("Seg")); - temp = HTTP_R.url.find("Seg") + 3; - Segment = atoi( HTTP_R.url.substr(temp,HTTP_R.url.find("-",temp)-temp).c_str()); - temp = HTTP_R.url.find("Frag") + 4; - ReqFragment = atoi( HTTP_R.url.substr(temp).c_str() ); - #if DEBUG >= 4 - /* strftime example */ - time_t rawtime; - struct tm * timeinfo; - char timebuffer [80]; - time ( &rawtime ); - timeinfo = localtime ( &rawtime ); - strftime (timebuffer,80,"%H:%M.%S.",timeinfo); - fprintf(stderr, "< %s >\t", timebuffer ); - printf( "URL: %s\n", HTTP_R.url.c_str()); - printf( "Movie: %s, Quality: %s, Seg %d Frag %d\n", Movie.c_str(), Quality.c_str(), Segment, ReqFragment); - #endif - Flash_RequestPending++; - }else{ - Movie = HTTP_R.url.substr(1); - Movie = Movie.substr(0,Movie.find("/")); - } - streamname = "/tmp/shared_socket_"; - for (std::string::iterator i=Movie.end()-1; i>=Movie.begin(); --i){ - if (!isalpha(*i) && !isdigit(*i)){ - Movie.erase(i); - }else{ - *i=tolower(*i); - }//strip nonalphanumeric - } - streamname += Movie; - ready4data = true; - }//FLASH handler - if (handler == HANDLER_PROGRESSIVE){ - //in het geval progressive nemen we aan dat de URL de streamname is, met .flv erachter - streamname = HTTP_R.url.substr(0, HTTP_R.url.size()-4);//strip de .flv - for (std::string::iterator i=streamname.end()-1; i>=streamname.begin(); --i){ - if (!isalpha(*i) && !isdigit(*i)){streamname.erase(i);}else{*i=tolower(*i);}//strip nonalphanumeric - } - streamname = "/tmp/shared_socket_" + streamname;//dit is dan onze shared_socket - //normaal zouden we ook een position uitlezen uit de URL, maar bij LIVE streams is dat zinloos - printf("Streamname: %s\n", streamname.c_str()); - ready4data = true; - }//PROGRESSIVE handler - HTTP_R.CleanForNext(); //maak schoon na verwerken voor eventuele volgende requests... + if (HTTP_R.ReadSocket(CONN_fd)){ + handler = HANDLER_PROGRESSIVE; + if ((HTTP_R.url.find("Seg") != std::string::npos) && (HTTP_R.url.find("Frag") != std::string::npos)){handler = HANDLER_FLASH;} + if (HTTP_R.url.find("f4m") != std::string::npos){handler = HANDLER_FLASH;} + if (HTTP_R.url == "/crossdomain.xml"){ + handler = HANDLER_NONE; + HTTP_S.Clean(); + HTTP_S.SetHeader("Content-Type", "text/xml"); + HTTP_S.SetBody(""); + HTTP_S.SendResponse(CONN_fd, "200", "OK");//geen SetBody = unknown length! Dat willen we hier. + #if DEBUG >= 3 + printf("Sending crossdomain.xml file\n"); + #endif } + if(handler == HANDLER_FLASH){ + if (HTTP_R.url.find("f4m") == std::string::npos){ + Movie = HTTP_R.url.substr(1); + Movie = Movie.substr(0,Movie.find("/")); + Quality = HTTP_R.url.substr( HTTP_R.url.find("/",1)+1 ); + Quality = Quality.substr(0, Quality.find("Seg")); + temp = HTTP_R.url.find("Seg") + 3; + Segment = atoi( HTTP_R.url.substr(temp,HTTP_R.url.find("-",temp)-temp).c_str()); + temp = HTTP_R.url.find("Frag") + 4; + ReqFragment = atoi( HTTP_R.url.substr(temp).c_str() ); + #if DEBUG >= 4 + printf( "URL: %s\n", HTTP_R.url.c_str()); + printf( "Movie: %s, Quality: %s, Seg %d Frag %d\n", Movie.c_str(), Quality.c_str(), Segment, ReqFragment); + #endif + Flash_RequestPending++; + }else{ + Movie = HTTP_R.url.substr(1); + Movie = Movie.substr(0,Movie.find("/")); + } + streamname = "/tmp/shared_socket_"; + for (std::string::iterator i=Movie.end()-1; i>=Movie.begin(); --i){ + if (!isalpha(*i) && !isdigit(*i)){ + Movie.erase(i); + }else{ + *i=tolower(*i); + }//strip nonalphanumeric + } + streamname += Movie; + ready4data = true; + }//FLASH handler + if (handler == HANDLER_PROGRESSIVE){ + //in het geval progressive nemen we aan dat de URL de streamname is, met .flv erachter + streamname = HTTP_R.url.substr(0, HTTP_R.url.size()-4);//strip de .flv + for (std::string::iterator i=streamname.end()-1; i>=streamname.begin(); --i){ + if (!isalpha(*i) && !isdigit(*i)){streamname.erase(i);}else{*i=tolower(*i);}//strip nonalphanumeric + } + streamname = "/tmp/shared_socket_" + streamname;//dit is dan onze shared_socket + //normaal zouden we ook een position uitlezen uit de URL, maar bij LIVE streams is dat zinloos + printf("Streamname: %s\n", streamname.c_str()); + ready4data = true; + }//PROGRESSIVE handler + HTTP_R.CleanForNext(); //maak schoon na verwerken voor eventuele volgende requests... } if (ready4data){ if (!inited){