--- src/send.c.orig	Thu Nov 11 17:16:26 1999
+++ src/send.c	Thu Nov 11 17:18:50 1999
@@ -139,6 +139,17 @@
     fprintf(stderr, "\nSocket creation failed.");
     exit(1);
   }
+
+#ifdef IP_PORTRANGE
+  {
+    int i=IP_PORTRANGE_HIGH;
+    if (setsockopt(sok, IPPROTO_IP, IP_PORTRANGE, &i, sizeof(i))<0)
+    {
+      fprintf(stderr, "\nSocket range selection failed.");
+      exit(1);
+    }
+  }
+#endif
    
   if(Verbose & ICQ_VERB_INFO)
     printf("\nSocket created.  Attempting to connect..." );
@@ -170,6 +181,12 @@
   bzero(&(sin.sin_zero), 8);  
 
   tcp_sok = socket(AF_INET, SOCK_STREAM, 0);
+#if IP_PORTRANGE
+  {
+    int i=IP_PORTRANGE_HIGH;
+    setsockopt(tcp_sok, IPPROTO_IP, IP_PORTRANGE, &i, sizeof(i));
+  }
+#endif
   setsockopt(tcp_sok, SOL_SOCKET, SO_REUSEADDR, &retval, 4);
   set_nonblock(tcp_sok);
   retval = bind(tcp_sok, (struct sockaddr*)&sin, sizeof(sin));
--- src/tcp.c.orig	Thu Nov 11 17:20:01 1999
+++ src/tcp.c	Thu Nov 11 17:20:02 1999
@@ -608,6 +608,14 @@
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if(sock == -1) return -1;
 
+#ifdef IP_PORTRANGE
+   {
+      int i=IP_PORTRANGE_HIGH;
+      if (setsockopt(sock, IPPROTO_IP, IP_PORTRANGE, &i, sizeof(i))<0)
+        return -1;
+   }
+#endif
+
    set_nonblock(sock);
 
    if((bind(sock, (struct sockaddr*)&local, sizeof(struct sockaddr))) == -1)
