diff --git a/src/modules/files/socket.c b/src/modules/files/socket.c
index fc7300d6f649aa3ed71ccf8a3b0c5b4c011693b2..a05a3196877d18ab69210b2f041d9229eeda2cd7 100644
--- a/src/modules/files/socket.c
+++ b/src/modules/files/socket.c
@@ -111,9 +111,11 @@ static void port_accept_callback(int fd,void *data)
 {
   struct port *f;
   f=(struct port *)data;
+#ifndef __NT__
 #ifdef DEBUG
   if(!query_nonblocking(f->fd))
     fatal("Port is in blocking mode in port accept callback!!!\n");
+#endif
 #endif
   assign_svalue_no_free(sp++, &f->id);
   apply_svalue(& f->accept_callback, 1);
@@ -199,6 +201,7 @@ static void port_bind(INT32 args)
     return;
   }
 
+#ifndef __NT__
   o=1;
   if(fd_setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&o, sizeof(int)) < 0)
   {
@@ -207,6 +210,7 @@ static void port_bind(INT32 args)
     push_int(0);
     return;
   }
+#endif
 
   my_set_close_on_exec(fd,1);
 
@@ -390,7 +394,7 @@ void port_setup_program(void)
   offset=add_storage(sizeof(struct port));
   map_variable("_accept_callback","mixed",0,offset+OFFSETOF(port,accept_callback),T_MIXED);
   map_variable("_id","mixed",0,offset+OFFSETOF(port,id),T_MIXED);
-  add_function("bind",port_bind,"function(int,void|mixed:int)",0);
+  add_function("bind",port_bind,"function(int,void|mixed,void|string:int)",0);
   add_function("listen_fd",port_listen_fd,"function(int,void|mixed:int)",0);
   add_function("set_id",port_set_id,"function(mixed:mixed)",0);
   add_function("query_id",port_query_id,"function(:mixed)",0);
diff --git a/src/modules/spider/dumudp.c b/src/modules/spider/dumudp.c
index 4f7ebc87eac0df2291a350dc77ca01bdf870fbf8..93120f80feebedcd2e4566d143b0efb570f674e0 100644
--- a/src/modules/spider/dumudp.c
+++ b/src/modules/spider/dumudp.c
@@ -1,7 +1,8 @@
 #include "config.h"
 
 #include "global.h"
-RCSID("$Id: dumudp.c,v 1.30 1998/01/10 21:21:32 hubbe Exp $");
+RCSID("$Id: dumudp.c,v 1.31 1998/01/21 19:57:17 hubbe Exp $");
+#include "fdlib.h"
 #include "interpret.h"
 #include "svalue.h"
 #include "stralloc.h"
@@ -102,11 +103,11 @@ static void udp_bind(INT32 args)
   if(FD != -1)
   {
     set_read_callback( FD, 0, 0 );
-    close(FD);	/* Shouldn't this be some other taste of close()? */
+    fd_close(FD);	/* Shouldn't this be some other taste of close()? */
     FD = -1;
   }
 
-  fd = socket(AF_INET, SOCK_DGRAM, 0);
+  fd = fd_socket(AF_INET, SOCK_DGRAM, 0);
   if(fd < 0)
   {
     pop_n_elems(args);
@@ -115,7 +116,7 @@ static void udp_bind(INT32 args)
   }
 
   o=1;
-  if(setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&o, sizeof(int)) < 0)
+  if(fd_setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&o, sizeof(int)) < 0)
   {
     close(fd);
     error("setsockopt failed\n");
@@ -133,7 +134,7 @@ static void udp_bind(INT32 args)
   addr.sin_port = htons( ((u_short)sp[-args].u.integer) );
   addr.sin_family = AF_INET;
 
-  tmp=bind(fd, (struct sockaddr *)&addr, sizeof(addr))<0;
+  tmp=fd_bind(fd, (struct sockaddr *)&addr, sizeof(addr))<0;
 
   if(tmp)
   {
@@ -154,7 +155,7 @@ void udp_enable_broadcast(INT32 args)
   int o;
   pop_n_elems(args);
   o = 1;
-  push_int(setsockopt(FD, SOL_SOCKET, SO_BROADCAST, (char *)&o, sizeof(int)));
+  push_int(fd_setsockopt(FD, SOL_SOCKET, SO_BROADCAST, (char *)&o, sizeof(int)));
 #else /* SO_BROADCAST */
   pop_n_elems(args);
   push_int(0);
@@ -184,7 +185,7 @@ void udp_read(INT32 args)
   pop_n_elems(args);
   fd = FD;
   THREADS_ALLOW();
-  while(((res = recvfrom(fd, buffer, UDP_BUFFSIZE, flags,
+  while(((res = fd_recvfrom(fd, buffer, UDP_BUFFSIZE, flags,
 			 (struct sockaddr *)&from, &fromlen))==-1)
 	&&(errno==EINTR));
   THREADS_DISALLOW();
@@ -193,6 +194,9 @@ void udp_read(INT32 args)
   {
     switch(errno)
     {
+#ifdef WSAEBADF
+      case WSAEBADF:
+#endif
      case EBADF:
       set_read_callback( FD, 0, 0 );
       error("Socket closed\n");
@@ -269,7 +273,7 @@ void udp_sendto(INT32 args)
   str = sp[2-args].u.string->str;
   len = sp[2-args].u.string->len;
   THREADS_ALLOW();
-  while(((res = sendto( fd, str, len, flags, (struct sockaddr *)&to,
+  while(((res = fd_sendto( fd, str, len, flags, (struct sockaddr *)&to,
 		       sizeof( struct sockaddr_in ))) == -1) && errno==EINTR);
   THREADS_DISALLOW();
   
@@ -318,7 +322,7 @@ void exit_udp(struct object *ignored)
     set_read_callback( FD, 0, 0 );
     if (& THIS->read_callback)
       free_svalue(& THIS->read_callback );
-    close(FD);
+    fd_close(FD);
   }
 }
 
@@ -382,7 +386,7 @@ static void udp_query_address(INT32 args)
     error("socket->query_address(): Port not bound yet.\n");
 
   len=sizeof(addr);
-  i=getsockname(THIS->fd,(struct sockaddr *)&addr,&len);
+  i=fd_getsockname(THIS->fd,(struct sockaddr *)&addr,&len);
   pop_n_elems(args);
   if(i < 0 || len < (int)sizeof(addr))
   {