Hi Garry, Does the attached patch fix makes things better?
patch -p0 < x86_64_fid_patch.diff sudo make install openchangeclient --fetch-items=Appointment On Thu, 2008-02-14 at 13:03 +0100, Julien Kerihuel wrote: > Hi Garry, > > Sorry for the delay. > > I may be wrong, but I'm still convinced this may be an alignment problem > in libmapi/simple_mapi.c. Basically you can display the mailbox > hierarchy using folder identifiers returned by Exchange, but can't > access any of the messages folders - except Inbox fetched from > OpenMsgStore - when they are built in OpenChange from Inbox EntryIDs. > > The easiest way to proceed, for the moment, would be to send me an > Outlook-Exchange capture so I can check what is the expected folder ID > value. If you choose this method, please meet the MAPI clients > requirements exposed below. If you don't feel comfortable sending a > wireshark capture, see the latest part of the email. > > Capture communication between Exchange and one of the following MAPI > client: Outlook 2002,XP, mdbvu32.exe or MFCMAPI. The last 2 tools are > freely available from Microsoft Website. The main objective is to > capture the "OpenFolder Calendar" operation. Click or double-click > (depending on the used tool) on the calendar folder will generate the > related and needed MAPI calls. > > Otherwise, I can propose you to wait a couple of days until I push > preliminary MAPI dissector code on OC repository. This way we will be > able to filter MAPI traffic to the minimum and avoid you to send any > sensitive data. > > Btw, there is a last method we "should" be able to provide when we have > time. Given that Outlook 2003 will try to negotiate a recent EMSMDB > version with Exchange (one with compression), we could setup a > transparent proxy which would negotiate a lower version of the protocol > and force Outlook to use the old and classic EcDoRpc call. IIRC we had > been working on such proxy a couple of months ... or years ago ;-) > > Cheers, > Julien. > > On Wed, 2008-02-13 at 12:06 +0000, Gary Rigg wrote: > > Hi Julien, > > > > The CPUs are certainly 64 bit... but the Linux installation is 32 > > bit... > > > > [EMAIL PROTECTED] bin]# file /sbin/init > > /sbin/init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), > > for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for > > GNU/Linux 2.6.9, stripped > > > > [EMAIL PROTECTED] bin]# uname -a > > Linux localhost.localdomain 2.6.15-1.2054_FC5smp #1 SMP Tue Mar 14 > > 16:05:46 EST 2006 i686 i686 i386 GNU/Linux > > > > [EMAIL PROTECTED] bin]# cat /proc/cpuinfo > > processor : 0 > > vendor_id : GenuineIntel > > cpu family : 15 > > model : 4 > > model name : Intel(R) Xeon(TM) CPU 3.00GHz > > stepping : 1 > > cpu MHz : 3000.898 > > cache size : 1024 KB > > physical id : 0 > > siblings : 2 > > core id : 0 > > cpu cores : 1 > > fdiv_bug : no > > hlt_bug : no > > f00f_bug : no > > coma_bug : no > > fpu : yes > > fpu_exception : yes > > cpuid level : 5 > > wp : yes > > flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca > > cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm > > constant_tsc pni monitor ds_cpl cid cx16 xtpr > > bogomips : 6011.53 > > > > processor : 1 > > vendor_id : GenuineIntel > > cpu family : 15 > > model : 4 > > model name : Intel(R) Xeon(TM) CPU 3.00GHz > > stepping : 1 > > cpu MHz : 3000.898 > > cache size : 1024 KB > > physical id : 0 > > siblings : 2 > > core id : 0 > > cpu cores : 1 > > fdiv_bug : no > > hlt_bug : no > > f00f_bug : no > > coma_bug : no > > fpu : yes > > fpu_exception : yes > > cpuid level : 5 > > wp : yes > > flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca > > cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm > > constant_tsc pni monitor ds_cpl cid cx16 xtpr > > bogomips : 6000.81 > > > > _______________________________________________ > devel mailing list > [email protected] > http://mailman.openchange.org/listinfo/devel -- Julien Kerihuel [EMAIL PROTECTED] OpenChange Project Manager GPG Fingerprint: 0B55 783D A781 6329 108A B609 7EF6 FE11 A35F 1F79
Index: libmapi/simple_mapi.c
===================================================================
--- libmapi/simple_mapi.c (revision 343)
+++ libmapi/simple_mapi.c (working copy)
@@ -115,9 +115,7 @@
mapi_object_t obj_inbox;
mapi_id_t id_inbox;
struct mapi_SPropValue_array properties_array;
- const struct SBinary_short *entryid;
- uint32_t low;
- uint32_t high;
+ const struct SBinary_short *entryid;
MAPI_RETVAL_IF(!global_mapi_ctx, MAPI_E_NOT_INITIALIZED, NULL);
MAPI_RETVAL_IF(!obj_store, MAPI_E_INVALID_PARAMETER, NULL);
@@ -185,20 +183,13 @@
MAPI_RETVAL_IF(!entryid, MAPI_E_NOT_FOUND, mem_ctx);
MAPI_RETVAL_IF(entryid->cb < 8, MAPI_E_INVALID_PARAMETER, mem_ctx);
- low = 0;
- low += entryid->lpb[entryid->cb - 1] << 24;
- low += entryid->lpb[entryid->cb - 2] << 16;
- low += entryid->lpb[entryid->cb - 3] << 8;
- low += entryid->lpb[entryid->cb - 4];
-
- high = 0;
- high += entryid->lpb[entryid->cb - 5] << 24;
- high += entryid->lpb[entryid->cb - 6] << 16;
- high += entryid->lpb[entryid->cb - 7] << 8;
- high += entryid->lpb[entryid->cb - 8];
-
- *folder = high;
- *folder = ((uint64_t)low) << 48;
+ *folder = 0;
+ *folder += ((uint64_t)entryid->lpb[entryid->cb - 3] << 56);
+ *folder += ((uint64_t)entryid->lpb[entryid->cb - 4] << 48);
+ *folder += ((uint64_t)entryid->lpb[entryid->cb - 5] << 40);
+ *folder += ((uint64_t)entryid->lpb[entryid->cb - 6] << 32);
+ *folder += ((uint64_t)entryid->lpb[entryid->cb - 7] << 24);
+ *folder += ((uint64_t)entryid->lpb[entryid->cb - 8] << 16);
/* the lowest byte of folder id is set to 1 while entryid one is not */
*folder += 1;
@@ -423,7 +414,7 @@
for (i = 0; i < rowset.cRows; i++) {
lpProp = get_SPropValue_SRow(&rowset.aRow[i], PR_MEMBER_NAME);
if (lpProp && lpProp->value.lpszA) {
- if (!strcmp(lpProp->value.lpszA, user)) {
+ if (!strcmp((const char *)lpProp->value.lpszA, user)) {
rowList.cEntries = 1;
rowList.aEntries = talloc_array(mem_ctx, struct mapi_SRow, 1);
rowList.aEntries[0].ulRowFlags = ROW_MODIFY;
@@ -522,7 +513,7 @@
for (i = 0; i < rowset.cRows; i++) {
lpProp = get_SPropValue_SRow(&rowset.aRow[i], PR_MEMBER_NAME);
if (lpProp && lpProp->value.lpszA) {
- if (!strcmp(lpProp->value.lpszA, user)) {
+ if (!strcmp((const char *)lpProp->value.lpszA, user)) {
rowList.cEntries = 1;
rowList.aEntries = talloc_array(mem_ctx, struct mapi_SRow, 1);
rowList.aEntries[0].ulRowFlags = ROW_REMOVE;
signature.asc
Description: This is a digitally signed message part
_______________________________________________ devel mailing list [email protected] http://mailman.openchange.org/listinfo/devel
