diff --git a/src/modules/spider/dumudp.c b/src/modules/spider/dumudp.c
index 1f1461ce210800905c7427597f590b5704e0c264..41cd2671b5a20a82aff70631d90a00f14eee2444 100644
--- a/src/modules/spider/dumudp.c
+++ b/src/modules/spider/dumudp.c
@@ -1,7 +1,7 @@
 #include "config.h"
 
 #include "global.h"
-RCSID("$Id: dumudp.c,v 1.36 1998/03/26 14:31:02 grubba Exp $");
+RCSID("$Id: dumudp.c,v 1.37 1998/05/22 12:28:30 grubba Exp $");
 #include "fdlib.h"
 #include "interpret.h"
 #include "svalue.h"
@@ -179,14 +179,19 @@ void udp_read(INT32 args)
   
   if(args)
   {
-    if(sp[-args].u.integer == 1)
-      flags = MSG_OOB;
-    else if(sp[-args].u.integer == 2)
-      flags = MSG_PEEK;
-    else if(sp[-args].u.integer == 3)
-      flags = MSG_PEEK|MSG_OOB;
-    else
+    if(sp[-args].u.integer & 1) {
+      flags |= MSG_OOB;
+    }
+    if(sp[-args].u.integer & 2) {
+#ifdef MSG_PEEK
+      flags |= MSG_PEEK;
+#else /* !MSG_PEEK */
+      /* FIXME: What should we do here? */
+#endif /* MSG_PEEK */
+    }
+    if(sp[-args].u.integer & ~3) {
       error("Illegal 'flags' value passed to udp->read([int flags])\n");
+    }
   }
   pop_n_elems(args);
   fd = FD;
@@ -254,14 +259,19 @@ void udp_sendto(INT32 args)
   
   if(args>3)
   {
-    if(sp[3-args].u.integer == 1)
-      flags = MSG_OOB;
-    else if(sp[3-args].u.integer == 2)
-      flags = MSG_DONTROUTE;
-    else if(sp[3-args].u.integer == 3)
-      flags = MSG_DONTROUTE|MSG_OOB;
-    else
+    if(sp[3-args].u.integer & 1) {
+      flags |= MSG_OOB;
+    }
+    if(sp[3-args].u.integer & 2) {
+#ifdef MSG_DONTROUTE
+      flags |= MSG_DONTROUTE;
+#else /* !MSG_DONTROUTE */
+      /* FIXME: What should we do here? */
+#endif /* MSG_DONTROUTE */
+    }
+    if(sp[3-args].u.integer & ~3) {
       error("Illegal 'flags' value passed to udp->send(string m,string t,int p,[int flags])\n");
+    }
   }
   if(!args)
     error("Illegal number of arguments to udp->sendto(string to"