From a1dad874469ff664375e9165d41034a1ee92b505 Mon Sep 17 00:00:00 2001 From: mischief Date: Wed, 25 Jun 2014 22:06:29 -0700 Subject: [PATCH 1/2] upas/fs: disable imap mail fetch pipeline due to race pipeline = 1 with a dovecot imap server causes FETCH and OK responses get interleaved so some message bodies accidentally get merged together. disabling it will make fetching mail over imap slower, but it works. --- sys/src/cmd/upas/fs/imap4.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/sys/src/cmd/upas/fs/imap4.c b/sys/src/cmd/upas/fs/imap4.c index 714a3e7d0..06e8fdd84 100644 --- a/sys/src/cmd/upas/fs/imap4.c +++ b/sys/src/cmd/upas/fs/imap4.c @@ -9,7 +9,18 @@ #pragma varargck type "Z" char* int doublequote(Fmt*); -int pipeline = 1; + +// if pipeline == 1 and upas/fs is used with dovecot, +// 9Xn OK responses sometimes come much later after FETCH responses, i.e. +// <- * 1 FETCH ... +// <- * 2 FETCH ... +// <- * 3 FETCH ... +// <- 9X5 OK Fetch completed. +// <- 9X6 OK Fetch completed. +// download 40: did not get message body +// <- 9X7 OK Fetch completed. +// causing multiple messages to turn into one in imap4.c:/^imap4resp. +int pipeline = 0; static char Eio[] = "i/o error"; From ec572a53a9acb392df42fa69f4051898480acad7 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sat, 28 Jun 2014 01:36:37 +0200 Subject: [PATCH 2/2] ptp: fix alignment assumptions for amd64 --- sys/src/cmd/nusb/ptp/ptp.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/sys/src/cmd/nusb/ptp/ptp.c b/sys/src/cmd/nusb/ptp/ptp.c index 8e618bb63..c43ef802c 100644 --- a/sys/src/cmd/nusb/ptp/ptp.c +++ b/sys/src/cmd/nusb/ptp/ptp.c @@ -45,10 +45,7 @@ struct Ptprpc uchar type[2]; uchar code[2]; uchar transid[4]; - union { - uchar p[5][4]; - uchar d[52]; - }; + uchar d[52]; }; struct Node @@ -225,7 +222,7 @@ vptprpc(Ioproc *io, int code, int flags, va_list a) for(i=0; i", (uchar*)&rpc, n); @@ -351,10 +348,10 @@ Resp1: if(flags & OutParam){ int *pp; - for(i=0; iid); + snprint(name, sizeof name, "sdU%d", d->id); snprint(desc, sizeof desc, "%d.ptp", d->id); threadpostsharesrv(&fs, nil, name, desc);