summaryrefslogtreecommitdiff
authorspiralman <spiralman>2003-03-15 16:19:51 (UTC)
committer spiralman <spiralman>2003-03-15 16:19:51 (UTC)
commitd421f8708983df4bab1f9069e87cda94e1d4aeea (patch) (side-by-side diff)
tree3aa7587f72705f73e65a5dc1aa3e824311fba2d1
parent69823b154b29cd62c9d53f7ebdaae4cb7dd61939 (diff)
downloadopie-d421f8708983df4bab1f9069e87cda94e1d4aeea.zip
opie-d421f8708983df4bab1f9069e87cda94e1d4aeea.tar.gz
opie-d421f8708983df4bab1f9069e87cda94e1d4aeea.tar.bz2
HttpFactory::data() now returns 0 if there is a 404 error (previously, if there was a 404 error on an image, the browser would get stuck in an infinite loop).
also, fixed html detection
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/ubrowser/httpfactory.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/noncore/net/ubrowser/httpfactory.cpp b/noncore/net/ubrowser/httpfactory.cpp
index 4ace4cb..b37e9f9 100644
--- a/noncore/net/ubrowser/httpfactory.cpp
+++ b/noncore/net/ubrowser/httpfactory.cpp
@@ -202,68 +202,74 @@ const QByteArray HttpFactory::processResponse( int sockfd, bool &isText ) const
if( *(inputBin.data()) == '\n' )
{
if( currentLine.isEmpty() || currentLine.startsWith( "\r") )
{
printf( "HttpFactory::processResponse: end of header\n" );
if( chunked )
{
return recieveChunked( sockfd );
} else {
return recieveNormal( sockfd, dataLength );
}
done = true;
}
if( currentLine.contains( "Transfer-Encoding: chunked", false) >= 1 )
{
chunked = true;
printf( "HttpFactory::processResponse: chunked encoding\n" );
}
if( currentLine.contains( "Content-Type: text", false ) >= 1 )
{
isText = true;
printf( "HttpFactory::processResponse: content type text\n" );
- if( currentLine.contains( "html", false ) )
+ if( currentLine.contains( "html", false ) >= 1)
{
browser->setTextFormat(Qt::RichText);
printf( "HttpFactory::processResponse: content type html\n" );
}
}
if( currentLine.contains( "Content-Type: image", false ) >= 1 )
{
isText = false;
printf( "HttpFactory::processResponse: content type image\n" );
}
if( currentLine.contains( "Content-Length", false ) >= 1 )
{
currentLine.remove( 0, 16 );
dataLength = currentLine.toInt();
printf( "HttpFactory::processResponse: content length: %d\n", dataLength );
}
+ if( currentLine.contains( "404", false ) >= 1 )
+ {
+ printf( "HttpFactory::processResponse: 404 error\n" );
+ return 0;
+ }
+
currentLine = "";
printf("HttpFactory::processResponse: reseting currentLine: %s\n", currentLine.latin1() );
}
}
}
const QByteArray HttpFactory::recieveNormal( int sockfd, int dataLen ) const
{
printf( "HttpFactory::recieveNormal: recieving w/out chunked encoding\n" );
QByteArray data( dataLen );
QByteArray temp( dataLen );
int recieved, i;
recieved = recv( sockfd, temp.data(), temp.size(), 0 );
printf( "HttpFactory::recieveNormal: found some data: %s\n", (char *)temp.data() );
for( i = 0; i < recieved; i++ )
{
data[i] = temp[i];
}
dataLen -= recieved;
while( dataLen > 0 )
{
recieved = recv( sockfd, temp.data(), temp.size(), 0 );