[cifs-protocol] RE: LZ77 + DIRECT2 compression MS-OXCRPC
Sebastian.Canevari at microsoft.com
Thu Aug 28 23:54:36 GMT 2008
Thanks for your inquiry.
Someone from our group will contact you with either answers or more questions for clarification.
Support Escalation Engineer, US-CSS DSC PROTOCOL TEAM
7100 N Hwy 161, Irving, TX - 75039
"Las Colinas - LC2"
Tel: +1 469 775 7849
e-mail: sebastc at microsoft.com
From: Matthieu Suiche [mailto:msuiche at gmail.com]
Sent: Thursday, August 28, 2008 6:37 PM
To: Interoperability Documentation Help
Cc: pfif at tridgell.net; cifs-protocol at samba.org; Stefan (metze) Metzmacher
Subject: LZ77 + DIRECT2 compression MS-OXCRPC
As a PFIF subcontractor, I am requesting correction assistance:
In MS-OXCRPC, 22.214.171.124.1.2 is claims "2. Find the longest match in the
window for the lookahead buffer." in the "Using the compression
But it looks Microsoft implementation has an unexpected behavior
regarding the above line. Actually, I've implemented both
decompression and compression of (LZ77+DIRECT2) algorithm and it works
well. But the problem I have is my compression function doesn't return
the same output has MSFT does. The routine I've implemented to find
the longest match in the window for the lookahead buffer returns a
longer length than MSFT implementation.
My compression routine returns:
string found at uncompressed_position 0x00000052
[ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ]
comp = 00BF = Metadata (len,offset) = (22, 00000017) -
bestlen < 25
comp = 0C (shared byte)
Comparaison of the compressed chunk:
comp_chunk_by_microsoft 32 != BF mycomp
comp_chunk_by_microsoft 00 == 00 mycomp
comp_chunk_by_microsoft 07 != DC mycomp
As you can see, MSFT implementation encode a 0x0032 metadata at offset
0x35 which means size of 5 (2 + 3) at position -6, and my
implementation encode a three bytes metadata at offset 0x35.
Here, http://www.msuiche.net/samba/debug_lzxpress.zip, you can found
debug outputs and concerned file. All files concern only
Could you please describe the exact process to retrieve the longest
match in the window for the lookahead buffer?
More information about the cifs-protocol