青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評論 :: 0 Trackbacks
公告
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網游開發(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊
公告照片
搜索
積分與排名
積分 - 663336
排名 - 24
最新評論
1.?re: boost::asio::spawn 將一統C++網絡庫
asio 成為C++首選網絡庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--金慶
3.?re: mingw編譯OrzNet
能發送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11078)
2.?SVN中邪惡的replace(11003)
3.?VS2005編譯libevent(10462)
4.?混音算法的學習與研究(10265)
5.?C調用lua腳本的效率測試(9027)
評論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯誤(18)
4.?C++引用優于指針(17)
5.?ACE與ASIO之間關于Socket編程的比較(16)
Firefox的HTTP內容解壓代碼閱讀
Firefox的HTTP內容解壓代碼閱讀
(轉載請注明來源于金慶的專欄)
參考firefox-2.0.0.4-source
RFC2612 3.5節Content codings, 內容編碼定義了三種內容壓縮方式:
gzip, compress, deflate, 但也可以注冊新的壓縮方式。
找到FireFox中的Http解壓代碼
:
Find 'deflate' in 'D:\mozilla\netwerk\streamconv\converters\nsHTTPCompressConv.h' :
D:\mozilla\netwerk\streamconv\converters\nsHTTPCompressConv.h(58): #define HTTP_DEFLATE_TYPE "deflate"
nsHttpCompressConv.h
#define
HTTP_DEFLATE_TYPE "deflate"
#define
HTTP_GZIP_TYPE "gzip"
#define
HTTP_X_GZIP_TYPE "x-gzip"
#define
HTTP_COMPRESS_TYPE "compress"
#define
HTTP_X_COMPRESS_TYPE "x-compress"
#define
HTTP_IDENTITY_TYPE "identity"
#define
HTTP_UNCOMPRESSED_TYPE "uncompressed"
typedef
enum
{
HTTP_COMPRESS_GZIP,
HTTP_COMPRESS_DEFLATE,
HTTP_COMPRESS_COMPRESS,
HTTP_COMPRESS_IDENTITY
} CompressMode;
定位到類與方法
:
class nsHTTPCompressConv : public nsIStreamConverter
nsHTTPCompressConv::AsyncConvertData(const char *aFromType, ...)
比較類型串,設置解壓模式。例
else if (!PL_strncasecmp(aFromType, HTTP_DEFLATE_TYPE, sizeof(HTTP_DEFLATE_TYPE)-1))
mMode = HTTP_COMPRESS_DEFLATE;
nsHTTPCompressConv::OnDataAvailable(...)
針對不同解壓模式進行解壓。
代碼閱讀:
switch
(mMode)
{
case
HTTP_COMPRESS_GZIP:
streamLen
=
check_header(iStr, streamLen,
&
rv);
case
HTTP_COMPRESS_DEFLATE:
break
;
default
:
}
HTTP_COMPRESS_COMPRESS沒有進行特別處理?
應該是無法解的,可能LZW解壓算法有專利問題。
Gzip進行頭部處理后就與deflate進行相似的解壓。
case
HTTP_COMPRESS_DEFLATE:
if
(mMode
==
HTTP_COMPRESS_DEFLATE)
/*
deflate
*/
else
/*
gzip
*/
break
;
deflate與gzip解壓的代碼幾乎相同,應該可以合成一塊代碼。
區別僅有:
deflate使用inflateInit(),而gzip使用inflateInit2()進行初始化,比inflateInit()多一個參數: -MAX_WBITS,表示處理raw deflate數據。因為gzip數據中的zlib壓縮數據塊沒有zlib header的兩個字節。使用inflateInit2時要求zlib庫忽略zlib header。在zlib手冊中要求windowBits為8..15,但是實際上其它范圍的數據有特殊作用,見zlib.h中的注釋,如負數表示raw deflate。
Apache的deflate變種可能也沒有zlib header,需要添加假頭后處理。即MS的錯誤deflate (raw deflate).zlib頭第1字節一般是0x78, 第2字節與第一字節合起來的雙字節應能被31整除,詳見rfc1950。例如Firefox的zlib假頭為0x7801,python zlib.compress()結果頭部為0x789c。
deflate添假頭,與gzip忽略頭部效果應該是一樣的,是否可以合并處理?
能否判斷頭部兩個字節是zlib頭部還是數據?是否有可能raw deflate數據按正常zlib塊處理了而不報錯?
check_header()
參考:
GZIP文件格式簡介
1. gz頭:0x1f8b
2. Z_DEFLATED標志:0x08
...
其中FLG.FEXTRA的處理有個錯誤,額外可選項的長度應該是兩個字節的合成:
mLen = ((uInt) c & 0377) << 8;
應改為
mLen |= ((uInt) c & 0377) << 8;
因為該額外字段一般在HTTP的應用中不會出現,所以沒有顯現出來。
我已提交:
Bugzilla@Mozilla – Bug 383984
注意:GZIP文件格式簡介中的額外字段的格式與rfc1952不一致,多了兩個“選項ID”字節。
還有,
case GZIP_COMMENT:
if (mFlags & GZIP_COMMENT)
應改為:
case GZIP_COMMENT:
if (mFlags & COMMENT)
該錯誤已提交,
Bugzilla@Mozilla – Bug 382849
zlib可以處理gzip頭部,但所有gz函數都是針對gz文件進行的,沒有直接在內存中處理gzip的,這好象是zlib功能上的一個不足吧?
相關rfc:
rfc1950: ZLIB Compressed Data Format Specification version 3.3
rfc1951: DEFLATE Compressed Data Format Specification version 1.3
(轉載請注明來源于金慶的專欄)
posted on 2007-07-09 12:13
金慶
閱讀(2236)
評論(0)
編輯
收藏
引用
所屬分類:
1. C/C++
只有注冊用戶
登錄
后才能發表評論。
相關文章:
How are dtLinks created in NavMesh
C++ parameter passing rules
Naming Conventions for Accessors
Visual Studio 2019 Compiler Hangs
Fbx File Format Identifier
查找內存錯誤
std::thread 中的異常會丟失調用棧
用賦值代替 protobuf CopyFrom()
vs2017 linux 編譯輸出改成 vs 格式
為 LiteIDE 添加選中標記
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
国内偷自视频区视频综合
|
欧美激情一区二区
|
国产区二精品视
|
亚洲欧洲av一区二区
|
亚洲欧美国内爽妇网
|
国产拍揄自揄精品视频麻豆
|
欧美有码在线视频
|
久久精品中文
|
亚洲精品日韩精品
|
一区二区不卡在线视频 午夜欧美不卡在
|
欧美久久精品午夜青青大伊人
|
国产精品99久久久久久久久
|
一区二区三区四区国产精品
|
亚洲精品乱码久久久久久黑人
|
欧美尤物一区
|
午夜亚洲福利在线老司机
|
国内自拍视频一区二区三区
|
欧美国产精品v
|
日韩天堂在线观看
|
亚洲影视在线播放
|
在线日韩中文字幕
|
99在线精品视频在线观看
|
国产区日韩欧美
|
亚洲国产精品一区二区www在线
|
国产精品草草
|
亚洲性视频网站
|
久久久久国产精品一区
|
日韩视频一区二区三区
|
亚洲欧美日韩视频一区
|
亚洲黑丝一区二区
|
亚洲视频在线二区
|
亚洲国产精品久久久
|
亚洲深爱激情
|
亚洲啪啪91
|
欧美影院午夜播放
|
亚洲小说欧美另类婷婷
|
久久免费国产精品
|
午夜精品视频在线观看一区二区
|
久久视频一区
|
欧美一级在线播放
|
欧美精品一区在线播放
|
久久综合伊人77777
|
国产精品高潮呻吟久久
|
亚洲国产婷婷香蕉久久久久久
|
国产一区视频网站
|
亚洲少妇自拍
|
夜夜夜精品看看
|
免费观看成人www动漫视频
|
久久九九有精品国产23
|
久久久91精品国产
|
亚洲欧洲一二三
|
国产视频在线一区二区
|
9色精品在线
|
最新成人在线
|
久久久久综合
|
久久久久国产精品麻豆ai换脸
|
欧美成人亚洲成人
|
国产日韩欧美成人
|
亚洲综合色自拍一区
|
亚洲线精品一区二区三区八戒
|
欧美凹凸一区二区三区视频
|
久久久久国产精品麻豆ai换脸
|
国产精品国产三级国产aⅴ9色
|
亚洲国产综合91精品麻豆
|
亚洲成色www8888
|
久久综合久久久
|
欧美激情区在线播放
|
亚洲高清在线播放
|
欧美在线视频日韩
|
久久综合久久综合久久综合
|
国产亚洲欧美另类中文
|
欧美一区二区三区精品
|
国内揄拍国内精品久久
|
亚洲第一页在线
|
亚洲欧洲精品一区二区三区波多野1战4
|
久久久精品国产99久久精品芒果
|
久久精品国产亚洲a
|
国内揄拍国内精品少妇国语
|
久久精品国产精品亚洲
|
免费影视亚洲
|
亚洲乱码国产乱码精品精可以看
|
欧美成人午夜激情视频
|
亚洲精品乱码
|
性欧美1819性猛交
|
国内精品美女av在线播放
|
久久久人成影片一区二区三区观看
|
老色鬼久久亚洲一区二区
|
欧美精品色综合
|
日韩一级免费观看
|
午夜日韩福利
|
精品福利免费观看
|
欧美国产国产综合
|
亚洲一区激情
|
欧美91福利在线观看
|
一区二区三区欧美视频
|
国产精品日韩二区
|
老司机午夜免费精品视频
|
亚洲欧洲视频
|
久久久女女女女999久久
|
亚洲精品久久久久中文字幕欢迎你
|
欧美日韩在线亚洲一区蜜芽
|
香蕉成人伊视频在线观看
|
亚洲高清视频在线观看
|
亚洲欧美日韩国产成人精品影院
|
国产欧美日韩精品a在线观看
|
久久综合婷婷
|
国产欧美在线
|
欧美在线视屏
|
亚洲第一黄网
|
国产精品日韩一区二区三区
|
久久亚洲综合网
|
亚洲香蕉伊综合在人在线视看
|
久久综合九色欧美综合狠狠
|
亚洲视频免费看
|
…久久精品99久久香蕉国产
|
久久9热精品视频
|
99精品国产在热久久
|
久久频这里精品99香蕉
|
亚洲一卡久久
|
亚洲精品国产视频
|
国产日韩视频
|
欧美日韩一级视频
|
欧美fxxxxxx另类
|
久久精品国产久精国产爱
|
一本久久综合亚洲鲁鲁五月天
|
嫩草影视亚洲
|
久久久久久久久久久久久9999
|
亚洲一区二区3
|
日韩午夜三级在线
|
91久久国产精品91久久性色
|
国产主播喷水一区二区
|
国产精品嫩草久久久久
|
欧美日韩免费一区二区三区
|
美女露胸一区二区三区
|
久久久久高清
|
欧美制服丝袜
|
欧美一区二区精品久久911
|
一区二区三区四区国产精品
|
亚洲欧洲免费视频
|
亚洲福利精品
|
欧美国产日韩一区
|
欧美大片在线观看一区
|
欧美a级在线
|
欧美大片在线观看一区
|
欧美电影在线播放
|
亚洲成色www8888
|
亚洲成人自拍视频
|
亚洲高清自拍
|
亚洲欧洲三级
|
一本一本大道香蕉久在线精品
|
亚洲精品在线观看视频
|
亚洲乱码国产乱码精品精98午夜
|
亚洲欧洲在线观看
|
999亚洲国产精
|
亚洲视频视频在线
|
午夜精品久久久久久久久久久
|
午夜精品久久
|
久久久久久高潮国产精品视
|
蜜桃久久精品一区二区
|
欧美精品一区三区在线观看
|
欧美深夜影院
|
国产欧美综合一区二区三区
|
尤物视频一区二区
|
亚洲精品小视频
|
亚洲自拍电影
|
久久久久国产一区二区三区
|
另类av一区二区
|
亚洲三级观看
|
亚洲欧美日韩综合
|
久久婷婷丁香
|
欧美日韩国产在线一区
|
国产日韩欧美综合精品
|
亚洲国产精品日韩
|
亚洲视频在线一区
|
久久久久国产一区二区三区四区
|
亚洲欧美国产不卡
|
久久精品国产免费看久久精品
|
牛牛影视久久网
|
一级日韩一区在线观看
|
久久精品国产免费观看
|
欧美日韩国产二区
|
国语自产精品视频在线看8查询8
|
91久久一区二区
|
亚洲欧美精品
|
欧美国产日韩精品免费观看
|
亚洲一级网站
|
开心色5月久久精品
|
国产精品久久久久久久第一福利
|
狠狠久久五月精品中文字幕
|
99在线精品免费视频九九视
|
久久精品网址
|
99天天综合性
|
欧美国产精品久久
|
国产一区在线看
|
亚洲欧美日韩中文在线制服
|
欧美成人午夜激情视频
|
午夜视频在线观看一区
|
欧美日韩在线视频观看
|
亚洲国产精品女人久久久
|
久久狠狠亚洲综合
|