Make recv block only the calling thread, not the entire process.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@451 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/vg_libpthread.c b/coregrind/vg_libpthread.c
index b373e10..3220cca 100644
--- a/coregrind/vg_libpthread.c
+++ b/coregrind/vg_libpthread.c
@@ -1690,6 +1690,8 @@
 int recv(int s, void *buf, size_t len, int flags)
 {
    __my_pthread_testcancel();
+   wait_for_fd_to_be_readable_or_erring(s);
+   __my_pthread_testcancel();
    return __libc_recv(s, buf, len, flags);
 }