http2 1.4.4 → 1.4.5
raw patch · 7 files changed
+24/−24 lines, 7 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- ChangeLog.md +4/−0
- Network/HPACK/HeaderBlock/From.hs +1/−1
- Network/HPACK/Table/Dynamic.hs +11/−11
- Network/HTTP2/Priority/PSQ.hs +3/−5
- bench-priority/Heap.hs +2/−4
- http2.cabal +1/−1
- test-hpack/JSON.hs +2/−2
ChangeLog.md view
@@ -1,3 +1,7 @@+## 1.4.5++* Removing zero reset from priority queues.+ ## 1.4.4 * Fixing a bug of reverse index.
Network/HPACK/HeaderBlock/From.hs view
@@ -63,7 +63,7 @@ decodeStep (!dyntbl,!builder,_) (Literal Add naming v) = do k <- fromNaming naming dyntbl let h = (k,v)- e = toEntry (k,v)+ e = toEntry h b = builder << h dyntbl' <- insertEntry e dyntbl return (dyntbl',b,False)
Network/HPACK/Table/Dynamic.hs view
@@ -73,7 +73,7 @@ -- | The size of the array , maxNumOfEntries :: !Int -- | The current dynamic table size (defined in HPACK)- , headerTableSize :: !Size+ , dynamicTableSize :: !Size -- | The max dynamic table size (defined in HPACK) , maxDynamicTableSize :: !Size -- | The value informed by SETTINGS_HEADER_TABLE_SIZE.@@ -100,7 +100,7 @@ es <- mapM (readArray circularTable . adj maxNumOfEntries) [beg .. end] let ts = zip [1..] es mapM_ printEntry ts- putStrLn $ " Table size: " ++ show headerTableSize ++ "/" ++ show maxDynamicTableSize+ putStrLn $ " Table size: " ++ show dynamicTableSize ++ "/" ++ show maxDynamicTableSize print reverseIndex where beg = offset + 1@@ -168,7 +168,7 @@ , offset = end , numOfEntries = 0 , circularTable = tbl- , headerTableSize = 0+ , dynamicTableSize = 0 , maxDynamicTableSize = maxsiz , limitForEncoding = lim , limitForDecoding = dlim@@ -200,7 +200,7 @@ copyEntries :: DynamicTable -> [Entry] -> IO DynamicTable copyEntries dyntbl [] = return dyntbl copyEntries dyntbl@DynamicTable{..} (e:es)- | headerTableSize + entrySize e <= maxDynamicTableSize = do+ | dynamicTableSize + entrySize e <= maxDynamicTableSize = do dyntbl' <- insertEnd e dyntbl copyEntries dyntbl' es | otherwise = return dyntbl@@ -229,12 +229,12 @@ return $ dyntbl { offset = offset' , numOfEntries = numOfEntries + 1- , headerTableSize = headerTableSize'+ , dynamicTableSize = dynamicTableSize' , reverseIndex = reverseIndex' } where i = offset- headerTableSize' = headerTableSize + entrySize e+ dynamicTableSize' = dynamicTableSize + entrySize e offset' = adj maxNumOfEntries (offset - 1) reverseIndex' = case reverseIndex of Nothing -> Nothing@@ -245,7 +245,7 @@ adjust :: DynamicTable -> [Header] -> IO (DynamicTable, [Header]) adjust dyntbl@DynamicTable{..} hs- | headerTableSize <= maxDynamicTableSize = return (dyntbl, hs)+ | dynamicTableSize <= maxDynamicTableSize = return (dyntbl, hs) | otherwise = do (dyntbl', h) <- removeEnd dyntbl adjust dyntbl' (h:hs)@@ -257,12 +257,12 @@ writeArray circularTable i e return $ dyntbl { numOfEntries = numOfEntries + 1- , headerTableSize = headerTableSize'+ , dynamicTableSize = dynamicTableSize' , reverseIndex = reverseIndex' } where i = adj maxNumOfEntries (offset + numOfEntries + 1)- headerTableSize' = headerTableSize + entrySize e+ dynamicTableSize' = dynamicTableSize + entrySize e reverseIndex' = case reverseIndex of Nothing -> Nothing Just rev -> Just $ insertDynamic (entryHeader e) (DIndex i) rev@@ -274,11 +274,11 @@ let i = adj maxNumOfEntries (offset + numOfEntries) e <- readArray circularTable i writeArray circularTable i dummyEntry -- let the entry GCed- let tsize = headerTableSize - entrySize e+ let tsize = dynamicTableSize - entrySize e h = entryHeader e dyntbl' = dyntbl { numOfEntries = numOfEntries - 1- , headerTableSize = tsize+ , dynamicTableSize = tsize } return (dyntbl', h)
Network/HTTP2/Priority/PSQ.hs view
@@ -111,11 +111,9 @@ dequeue :: PriorityQueue a -> Maybe (Key, Precedence, a, PriorityQueue a) dequeue PriorityQueue{..} = case P.minView queue of- Nothing -> Nothing- Just (k, p, v, queue')- | P.null queue' -> Just (k, p, v, empty)- | otherwise -> let !base = deficit p- in Just (k, p, v, PriorityQueue base queue')+ Nothing -> Nothing+ Just (k, p, v, queue') -> let !base = deficit p+ in Just (k, p, v, PriorityQueue base queue') delete :: Key -> PriorityQueue a -> (Maybe a, PriorityQueue a) delete k q@PriorityQueue{..} = case P.alter f k queue of
bench-priority/Heap.hs view
@@ -99,10 +99,8 @@ dequeue :: PriorityQueue a -> Maybe (Key, Precedence, a, PriorityQueue a) dequeue (PriorityQueue _ heap) = case H.uncons heap of- Nothing -> Nothing- Just (Entry k p v, heap')- | H.null heap' -> Just (k, p, v, empty) -- reset the deficit base- | otherwise -> Just (k, p, v, PriorityQueue (deficit p) heap')+ Nothing -> Nothing+ Just (Entry k p v, heap') -> Just (k, p, v, PriorityQueue (deficit p) heap') delete :: Key -> PriorityQueue a -> (Maybe a, PriorityQueue a) delete k (PriorityQueue base heap) = (mv, PriorityQueue base' heap')
http2.cabal view
@@ -1,5 +1,5 @@ Name: http2-Version: 1.4.4+Version: 1.4.5 Author: Kazu Yamamoto <kazu@iij.ad.jp> Maintainer: Kazu Yamamoto <kazu@iij.ad.jp> License: BSD3
test-hpack/JSON.hs view
@@ -79,7 +79,7 @@ instance ToJSON HeaderList where toJSON hs = toJSON $ map toJSON hs -instance FromJSON Header where+instance {-# OVERLAPPING #-} FromJSON Header where parseJSON (Array a) = pure (toKey (a ! 0), toValue (a ! 1)) -- old where toKey = toValue@@ -88,7 +88,7 @@ (k,v) = head $ H.toList o parseJSON _ = mzero -instance ToJSON Header where+instance {-# OVERLAPPING #-} ToJSON Header where toJSON (k,v) = object [ byteStringToText k .= byteStringToText v ] textToByteString :: Text -> ByteString