+ = do atomically $ do queue <- readTVar tQueue
+ when (S.length queue >= cnfMaxPipelineDepth cnf)
+ retry
+
+ -- リクエストを讀む。パースできない場合は直ちに 400 Bad
+ -- Request 應答を設定し、それを出力してから切斷するやう
+ -- に ResponseWriter に通知する。
+ hWaitForInput h (-1)
+ chunk <- B.hGetNonBlocking h 1024
+
+ let input = B.append soFar chunk
+ case parse requestP input of
+ (Success req , input') -> acceptParsableRequest req input'
+ (IllegalInput, _ ) -> acceptNonparsableRequest
+ (ReachedEOF , _ ) -> if B.length input >= 1024 * 1024 then
+ -- ヘッダ長過ぎ
+ acceptNonparsableRequest
+ else
+ acceptRequest input