rendered paste bodyint request_get(string fileHash, string pieceHash, char* recv_buffer)
{
ClientInfo client;
string URI = "/cache/get.jsp?fileHash=" + fileHash + "&pieceHash=" + pieceHash;
HttpHeader header(GET, URI);
header.Add(header.p.Accept, "*/*");
header.Add(header.p.AcceptLanguage, "en-us");
header.Add(header.p.UserAgent, client.UserAgent);
header.Add(header.p.Host, "p-cache.veoh.com");
header.Add(header.p.Cookie, ("VEOH_GUIDE_AUTH=" + client.authCookie + " ACEGI_SECURITY_HASHED_REMEMBER_ME_COOKIE=" + client.securityCookie));
string http_buffer = header.Create();
cout << http_buffer;
int s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
/*
** Non-blocking is a bad idea, eats CPU
if(fcntl(s, F_SETFL, O_NONBLOCK) == -1) {
cout << "Error occurred in fcntl!" << endl;
#ifdef _WIN32
closesocket(s);
#else
close(s);
#endif //_WIN32
exit(0);
}
if(fcntl(s, F_SETFL, O_ASYNC) == -1) {
cout << "Error occurred in fcntl!" << endl;
#ifdef _WIN32
closesocket(s);
#else
close(s);
#endif //_WIN32
exit(0);
}
*/
veoh = gethostbyname("p-cache.veoh.com");
sockaddr_in veohweb;
veohweb.sin_addr.s_addr = inet_addr(inet_ntoa(*((struct in_addr *)veoh->h_addr)));
veohweb.sin_port = htons(80);
veohweb.sin_family = AF_INET;
memset(veohweb.sin_zero, '\0', sizeof veohweb.sin_zero);
if (connect(s, (sockaddr*)&veohweb, sizeof(veohweb))==-1)
cout << "Error connecting to Veoh" << endl;
int bsent = send(s, http_buffer.c_str(), http_buffer.size(), 0);
if (bsent==-1)
cout << "Error sending request to Veoh" << endl;
else
cout << "Request sent to Veoh" << endl;
int brecv = 0;
int data = brecv;
fd_set readfds;
struct timeval tv;
FD_ZERO(&readfds);
FD_SET(s, &readfds);
//recv_buffer[header_length+content_length+1] = '\0';
int status = 0;
do {
tv.tv_sec = 2;
tv.tv_usec = 500000;
status = select(s+1, &readfds, NULL, NULL, &tv);
if (status == -1) {
cout << "Error in select!" << endl;
break;
} else if(status == 0) {
break;
} else {
brecv = recv(s, recv_buffer, 1000, 0);
if(brecv != -1) {
data += brecv;
for(int a = 0; a < brecv; ++a)
cout << recv_buffer[a];
} else {
cout << "Error receiving from Veoh" << endl;
}
}
} while(brecv != 0);
cout << endl;
#ifdef _WIN32
closesocket(s);
#else
close(s);
#endif //_WIN32
return brecv;
}