@@ -2027,6 +2027,7 @@ func GetTableContents(folderid []byte, assoc bool, columns []PropertyTag) (*RopQ
20272027 var contentsTable * RopGetContentsTableResponse
20282028 var svrhndl []byte
20292029 var err error
2030+ var inputHndl uint8 = 0x03
20302031 if assoc == false {
20312032 contentsTable , svrhndl , err = GetContentsTable (folderid )
20322033 } else {
@@ -2040,19 +2041,19 @@ func GetTableContents(folderid []byte, assoc bool, columns []PropertyTag) (*RopQ
20402041 execRequest .Init ()
20412042
20422043 setColumns := RopSetColumnsRequest {RopID : 0x12 , LogonID : AuthSession .LogonID , SetColumnFlags : 0x00 }
2043- setColumns .InputHandle = 0x01
2044- setColumns .PropertyTagCount = 2 // uint16(len(columns))
2044+ setColumns .InputHandle = inputHndl
2045+ setColumns .PropertyTagCount = uint16 (len (columns ))
20452046 setColumns .PropertyTags = make ([]PropertyTag , setColumns .PropertyTagCount )
20462047 for k , v := range columns {
20472048 setColumns .PropertyTags [k ] = v
20482049 }
20492050
20502051 fullReq := setColumns .Marshal ()
20512052
2052- queryRows := RopQueryRowsRequest {RopID : 0x15 , LogonID : AuthSession .LogonID , InputHandle : 0x01 , QueryRowsFlags : 0x00 , ForwardRead : 0x01 , RowCount : uint16 (contentsTable .RowCount )}
2053+ queryRows := RopQueryRowsRequest {RopID : 0x15 , LogonID : AuthSession .LogonID , InputHandle : inputHndl , QueryRowsFlags : 0x00 , ForwardRead : 0x01 , RowCount : uint16 (contentsTable .RowCount )}
20532054 fullReq = append (fullReq , queryRows .Marshal ()... )
20542055
2055- ropRelease := RopReleaseRequest {RopID : 0x01 , LogonID : AuthSession .LogonID , InputHandle : 0x01 }
2056+ ropRelease := RopReleaseRequest {RopID : 0x01 , LogonID : AuthSession .LogonID , InputHandle : inputHndl }
20562057 fullReq = append (fullReq , ropRelease .Marshal ()... )
20572058
20582059 execRequest .RopBuffer .ROP .RopsList = fullReq
@@ -2068,19 +2069,19 @@ func GetTableContents(folderid []byte, assoc bool, columns []PropertyTag) (*RopQ
20682069 bufPtr := 10
20692070 var p int
20702071 var e error
2071- utils . Info . Println ( execResponse )
2072+
20722073 setColumnsResp := RopSetColumnsResponse {}
20732074 if p , e = setColumnsResp .Unmarshal (execResponse .RopBuffer [bufPtr :]); e != nil {
20742075 return nil , e
20752076 }
20762077 bufPtr += p
2077- utils . Info . Println ( "Display" )
2078+
20782079 rows := RopQueryRowsResponse {}
20792080
20802081 if _ , e = rows .Unmarshal (execResponse .RopBuffer [bufPtr :], setColumns .PropertyTags ); e != nil {
20812082 return nil , e
20822083 }
2083- utils . Info . Println ( "Display" )
2084+
20842085 return & rows , nil
20852086 }
20862087
@@ -2170,12 +2171,12 @@ func ExecuteDeleteRuleAdd(rulename, triggerword string) (*ExecuteResponse, error
21702171 execRequest .RopBuffer .ROP .RopsList = ruleBytes
21712172 execRequest .RopBuffer .ROP .ServerObjectHandleTable = []byte {0x01 , 0x00 , 0x00 , AuthSession .LogonID } //append(AuthSession.RulesHandle, []byte{0xFF, 0xFF, 0xFF, 0xFF}...)
21722173
2173- execResponse , err := sendMapiRequest (execRequest )
2174+ _ , err := sendMapiRequest (execRequest )
21742175
21752176 if err != nil {
21762177 return nil , & TransportError {err }
21772178 }
2178- utils .Trace .Println (execResponse )
2179+ // utils.Trace.Println(execResponse)
21792180 return nil , err
21802181
21812182 //return nil, ErrUnknown
@@ -2325,6 +2326,7 @@ func DecodeRulesResponse(resp []byte, properties []PropertyTag) ([]Rule, []byte,
23252326 }
23262327
23272328 rows := RopQueryRowsResponse {}
2329+
23282330 tpos , err = rows .Unmarshal (resp [pos :], properties )
23292331 if err != nil {
23302332 return nil , nil , err
@@ -2350,9 +2352,15 @@ func DecodeBufferToRows(buff []byte, cols []PropertyTag) []PropertyRow {
23502352
23512353 var pos = 0
23522354 var rows []PropertyRow
2355+ var flag byte
2356+ fmt .Println (buff )
23532357 for _ , property := range cols {
23542358 trow := PropertyRow {}
2355- if property .PropertyType == PtypInteger32 {
2359+ flag , pos = utils .ReadByte (pos , buff )
2360+ if flag != 0x00 {
2361+ trow .ValueArray , pos = utils .ReadBytes (pos , 5 , buff )
2362+ rows = append (rows , trow )
2363+ } else if property .PropertyType == PtypInteger32 {
23562364 trow .ValueArray , pos = utils .ReadBytes (pos , 2 , buff )
23572365 rows = append (rows , trow )
23582366 } else if property .PropertyType == PtypString {
0 commit comments