Привет все!
Я написал свой прокси, вот только, судя по всему не учел какую-та мелкую деталь. Дело в том что некоторые сайты грузятся через него корректно, а некоторые — нет. Принцып — пустяк: подставил в браузере свой прокси. А далее что принял прокси, то и отдал клиенту без изменения. Я в сокетах почти новичок, может кто-то мне сможет помочь? Заранее огромное спасибо
Очень прошу, посмотрите упрощеный код этого прокси. Вот его основная ф-ия:
CSocket sockRecv;
sockRecv.Attach(((MT_PARAM*)param)->sock);
for (;;)
{
int nBufLen = sockRecv.Receive(buf,nMaxBufLen);
/* ....
Cutting from HTTP header "Proxy-Connection" field
*/
CSocket sockClient;
sockClient.Create();
int nParam = 60000;
sockClient.SetSockOpt(SO_RCVTIMEO,(char*)&nParam,sizeof(nParam));
sockClient.SetSockOpt(SO_SNDTIMEO,(char*)&nParam,sizeof(nParam));
sockRecv.SetSockOpt(SO_RCVTIMEO,(char*)&nParam,sizeof(nParam));
sockRecv.SetSockOpt(SO_SNDTIMEO,(char*)&nParam,sizeof(nParam));
/* ....
Define from HTTP header host name -> strHost
*/
if (!sockClient.Connect(strHost,nPort))
break;
int nSent = sockClient.Send(strSend,nBufLen);
if (nSent != nBufLen)
break;
for (;;)
{
nBufLen = sockClient.Receive(buf,nMaxBufLen);
// I comment it. pthread->MakeSomeChanges(nBufLen,buf);
if (nBufLen <= 0) break;
int nSent = sockRecv.Send(buf,nBufLen);
if (nSent != nBufLen)
break;
}
sockClient.Close();
sockRecv.Close();
break;
}