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