From ec05778d5718a7912e506764d443a78d6a6179e3 Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Mon, 5 Nov 2012 22:41:51 +0000 Subject: Converted tabs to spaces with tabconv. --- src/stable/protocolhttp.cpp | 362 ++++++++++++++++++++++---------------------- 1 file changed, 181 insertions(+), 181 deletions(-) (limited to 'src/stable/protocolhttp.cpp') diff --git a/src/stable/protocolhttp.cpp b/src/stable/protocolhttp.cpp index ea1a86e..352f7c7 100644 --- a/src/stable/protocolhttp.cpp +++ b/src/stable/protocolhttp.cpp @@ -8,7 +8,7 @@ #include #ifndef WIN32 - #include + #include #endif #include @@ -32,9 +32,9 @@ Bu::ProtocolHttp::~ProtocolHttp() void Bu::ProtocolHttp::onNewConnection( Bu::Client *pClient ) { - this->pClient = pClient; + this->pClient = pClient; - iState = 0; + iState = 0; } #define SDB( i ) (void)0 @@ -42,196 +42,196 @@ void Bu::ProtocolHttp::onNewConnection( Bu::Client *pClient ) void Bu::ProtocolHttp::onNewData( Bu::Client *pClient ) { -/* logHexDump( - 1, - pClient->getInput().getStr(), - pClient->getInput().getSize(), - "input" - );*/ - - for(;;) - { - Bu::String sToken; - TokenType tt = getToken( sToken ); - - if( tt == ttOutOfData ) - return; - - switch( iState ) - { - case 0: // Start token, should be "method" (get, put, etc) - SDB( 0 ); - sMethod = sToken; - iState = 1; - break; - - case 1: // The path requested - SDB( 1 ); - sPath = sToken; - iState = 2; - break; - - case 2: // The protocol name and version - SDB( 2 ); - if( strncmp( sToken.getStr(), "HTTP/", 5 ) ) - { - pClient->disconnect(); - return; - } - else - { - char *s, *s2; - s = sToken.getStr()+5; - iMajor = strtol( s, &s2, 10 ); - iMinor = strtol( s2+1, NULL, 10 ); - iState = 3; - } - break; - - case 3: // End of initial header, now comes mime-style blocks. - SDB( 3 ); - if( tt == ttNewline ) - { - iState = 10; - } - else if( tt == ttDoubleNewline ) - { - earlyResponse(); - } - else - { - pClient->disconnect(); - return; - } - break; - - case 10: // HTTP-Message (skipped for now...) - SDB( 10 ); - if( tt == ttString ) - { - iState = 11; - } - else - { - pClient->disconnect(); - } - break; - - case 11: // Should be a colon... - SDB( 11 ); - if( tt == ttSeperator && sToken == ":" ) - { - iState = 12; - } - else - { - pClient->disconnect(); - } - break; - - case 12: - SDB( 12 ); - if( tt == ttNewline ) - { - iState = 10; - } - if( tt == ttDoubleNewline ) - { - earlyResponse(); - } - break; - - case 20: - SDB( 20 ); - break; - } - } +/* logHexDump( + 1, + pClient->getInput().getStr(), + pClient->getInput().getSize(), + "input" + );*/ + + for(;;) + { + Bu::String sToken; + TokenType tt = getToken( sToken ); + + if( tt == ttOutOfData ) + return; + + switch( iState ) + { + case 0: // Start token, should be "method" (get, put, etc) + SDB( 0 ); + sMethod = sToken; + iState = 1; + break; + + case 1: // The path requested + SDB( 1 ); + sPath = sToken; + iState = 2; + break; + + case 2: // The protocol name and version + SDB( 2 ); + if( strncmp( sToken.getStr(), "HTTP/", 5 ) ) + { + pClient->disconnect(); + return; + } + else + { + char *s, *s2; + s = sToken.getStr()+5; + iMajor = strtol( s, &s2, 10 ); + iMinor = strtol( s2+1, NULL, 10 ); + iState = 3; + } + break; + + case 3: // End of initial header, now comes mime-style blocks. + SDB( 3 ); + if( tt == ttNewline ) + { + iState = 10; + } + else if( tt == ttDoubleNewline ) + { + earlyResponse(); + } + else + { + pClient->disconnect(); + return; + } + break; + + case 10: // HTTP-Message (skipped for now...) + SDB( 10 ); + if( tt == ttString ) + { + iState = 11; + } + else + { + pClient->disconnect(); + } + break; + + case 11: // Should be a colon... + SDB( 11 ); + if( tt == ttSeperator && sToken == ":" ) + { + iState = 12; + } + else + { + pClient->disconnect(); + } + break; + + case 12: + SDB( 12 ); + if( tt == ttNewline ) + { + iState = 10; + } + if( tt == ttDoubleNewline ) + { + earlyResponse(); + } + break; + + case 20: + SDB( 20 ); + break; + } + } } Bu::ProtocolHttp::TokenType Bu::ProtocolHttp::getToken( Bu::String &line ) { - char s; - int jmax = pClient->getInputSize(); - bool bNonWS = false; - - for( int j = 0; j < jmax; j++ ) - { - pClient->peek( &s, 1, j ); - if( iState > 2 && isSeperator( s ) ) - { - if( j == 0 ) - { - line += s; - pClient->seek( 1 ); - return ttSeperator; - } - else - { - pClient->seek( j ); - return ttString; - } - } - else if( isWS( s ) ) - { - if( bNonWS ) - { - pClient->seek( j ); - return ttString; - } - } - else if( s == CR ) - { - if( pClient->getInputSize() < 4 ) - return ttOutOfData; - - char ss[3]; - pClient->peek( ss, 3, j+1 ); - if( ss[0] == LF && ss[1] != ' ' && ss[1] != '\t' ) - { - if( bNonWS ) - { - pClient->seek( j ); - return ttString; - } - else if( ss[1] == CR && ss[2] == LF ) - { - pClient->seek( 4 ); - return ttDoubleNewline; - } - else - { - pClient->seek( 2 ); - return ttNewline; - } - } - - j += 2; - if( bNonWS ) - { - pClient->seek( j ); - return ttString; - } - } - else - { - line += s; - bNonWS = true; - } - } - - return ttOutOfData; + char s; + int jmax = pClient->getInputSize(); + bool bNonWS = false; + + for( int j = 0; j < jmax; j++ ) + { + pClient->peek( &s, 1, j ); + if( iState > 2 && isSeperator( s ) ) + { + if( j == 0 ) + { + line += s; + pClient->seek( 1 ); + return ttSeperator; + } + else + { + pClient->seek( j ); + return ttString; + } + } + else if( isWS( s ) ) + { + if( bNonWS ) + { + pClient->seek( j ); + return ttString; + } + } + else if( s == CR ) + { + if( pClient->getInputSize() < 4 ) + return ttOutOfData; + + char ss[3]; + pClient->peek( ss, 3, j+1 ); + if( ss[0] == LF && ss[1] != ' ' && ss[1] != '\t' ) + { + if( bNonWS ) + { + pClient->seek( j ); + return ttString; + } + else if( ss[1] == CR && ss[2] == LF ) + { + pClient->seek( 4 ); + return ttDoubleNewline; + } + else + { + pClient->seek( 2 ); + return ttNewline; + } + } + + j += 2; + if( bNonWS ) + { + pClient->seek( j ); + return ttString; + } + } + else + { + line += s; + bNonWS = true; + } + } + + return ttOutOfData; } bool Bu::ProtocolHttp::isWS( char buf ) { - return (buf == ' ' || buf == '\t'); + return (buf == ' ' || buf == '\t'); } bool Bu::ProtocolHttp::isSeperator( char buf ) { - return (buf == '(' || buf == ')' || buf == '<' || buf == '>' || - buf == '@' || buf == ',' || buf == ';' || buf == ':' || - buf == '\\' || buf == '\"' || buf == '/' || buf == '[' || + return (buf == '(' || buf == ')' || buf == '<' || buf == '>' || + buf == '@' || buf == ',' || buf == ';' || buf == ':' || + buf == '\\' || buf == '\"' || buf == '/' || buf == '[' || buf == ']' || buf == '?' || buf == '=' || buf == '{' || buf == '}' ); } -- cgit v1.2.3