Squid internals Flow of a typical request Incoming request is accepted through httpAccept() The connection state is created If ident is required then the ident request process is started clientReadRequest() is called whenever the client filedescriptor has data to be read (hopefully the HTTP request!) If the request is a request body (think POST) then hand the data off to clientProcessBody() attempt to parse the HTTP request through parseHttpRequest() If we succeeded in getting a request, attempt to parse the URL through urlParse() If we suceeded in getting a valid URL, attempt to parse any remaining HTTP headers through httpRequestParseHeader() If the request is an internal one (think icons) then mark the request as internal If this is a request body then verify the request is not too large Start the access check through clientAccessCheck()