From 70f2e47b3f1f61895c303b2a858696356997b883 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Tue, 20 Jul 1999 01:36:00 +0200
Subject: [PATCH] udp_read() and udp_sendto() now check threads etc in the
 EINTR loop.

Rev: src/modules/files/udp.c:1.3
---
 src/modules/files/udp.c | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/src/modules/files/udp.c b/src/modules/files/udp.c
index 34aa271319..7e769aabb5 100644
--- a/src/modules/files/udp.c
+++ b/src/modules/files/udp.c
@@ -1,12 +1,12 @@
 /*
- * $Id: udp.c,v 1.2 1999/07/15 17:43:49 mirar Exp $
+ * $Id: udp.c,v 1.3 1999/07/19 23:36:00 grubba Exp $
  */
 
 #include "global.h"
 
 #include "file_machine.h"
 
-RCSID("$Id: udp.c,v 1.2 1999/07/15 17:43:49 mirar Exp $");
+RCSID("$Id: udp.c,v 1.3 1999/07/19 23:36:00 grubba Exp $");
 #include "fdlib.h"
 #include "interpret.h"
 #include "svalue.h"
@@ -212,11 +212,14 @@ void udp_read(INT32 args)
   }
   pop_n_elems(args);
   fd = FD;
-  THREADS_ALLOW();
-  while(((res = fd_recvfrom(fd, buffer, UDP_BUFFSIZE, flags,
-			 (struct sockaddr *)&from, &fromlen))==-1)
-	&&(errno==EINTR));
-  THREADS_DISALLOW();
+  do {
+    THREADS_ALLOW();
+    res = fd_recvfrom(fd, buffer, UDP_BUFFSIZE, flags,
+		      (struct sockaddr *)&from, &fromlen);
+    THREADS_DISALLOW();
+
+    check_threads_etc();
+  } while((res==-1) && (errno==EINTR));
 
   THIS->my_errno=errno;
 
@@ -307,10 +310,15 @@ void udp_sendto(INT32 args)
   fd = FD;
   str = sp[2-args].u.string->str;
   len = sp[2-args].u.string->len;
-  THREADS_ALLOW();
-  while(((res = fd_sendto( fd, str, len, flags, (struct sockaddr *)&to,
-		       sizeof( struct sockaddr_in ))) == -1) && errno==EINTR);
-  THREADS_DISALLOW();
+
+  do {
+    THREADS_ALLOW();
+    res = fd_sendto( fd, str, len, flags, (struct sockaddr *)&to,
+		     sizeof( struct sockaddr_in ));
+    THREADS_DISALLOW();
+
+    check_threads_etc();
+  } while((res == -1) && errno==EINTR);
   
   if(res<0)
   {
-- 
GitLab