ref: 4cb5b46013453b44ca8410a59ab8cd923bc2ff06
parent: c783a31311d133fb592edf8df02525b725d5a164
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Thu Aug 30 13:39:22 EDT 2012
upas/fs: catch alarm note (used in pop3 code)
--- a/sys/src/cmd/upas/fs/fs.c
+++ b/sys/src/cmd/upas/fs/fs.c
@@ -145,10 +145,9 @@
}
void
-notifyf(void *a, char *s)
+notifyf(void *, char *s)
{- USED(a);
- if(strncmp(s, "interrupt", 9) == 0)
+ if(strstr(s, "alarm") || strstr(s, "interrupt"))
noted(NCONT);
noted(NDFLT);
}
--- a/sys/src/cmd/upas/fs/pop3.c
+++ b/sys/src/cmd/upas/fs/pop3.c
@@ -83,13 +83,13 @@
char *p;
alarm(60*1000);
- if((s = Brdstr(&pop->bin, '\n', 0)) == nil){+ s = Brdstr(&pop->bin, '\n', 0);
+ alarm(0);
+ if(s == nil){close(pop->fd);
pop->fd = -1;
- alarm(0);
return "unexpected eof";
}
- alarm(0);
p = s+strlen(s)-1;
while(p >= s && (*p == '\r' || *p == '\n'))
--
⑨