only set IP_TOS on IPv4 sockets
authorLove Hörnquist Åstrand <lha@h5l.org>
Sun, 19 Jun 2011 17:58:22 +0000 (10:58 -0700)
committerLove Hörnquist Åstrand <lha@h5l.org>
Sun, 19 Jun 2011 17:58:22 +0000 (10:58 -0700)
appl/ftp/ftpd/ftpd.c

index 257273699370f92b535fce3bf0033e33efb99386..ddfed2129f09cc5da45f67a4a86e40dbc93230ff 100644 (file)
@@ -346,14 +346,9 @@ main(int argc, char **argv)
        syslog(LOG_ERR, "getsockname (%s): %m",argv[0]);
        exit(1);
     }
-#if defined(IP_TOS) && defined(HAVE_SETSOCKOPT)
-    {
-       int tos = IPTOS_LOWDELAY;
-
-       if (setsockopt(STDIN_FILENO, IPPROTO_IP, IP_TOS,
-                      (void *)&tos, sizeof(int)) < 0)
-           syslog(LOG_WARNING, "setsockopt (IP_TOS): %m");
-    }
+#if defined(IP_TOS)
+    if (ctrl_addr->sa_family == AF_INET)
+       socket_set_tos(STDIN_FILENO, IP_TOS);
 #endif
     data_source->sa_family = ctrl_addr->sa_family;
     socket_set_port (data_source,
@@ -1277,12 +1272,8 @@ dataconn(const char *name, off_t size, const char *mode)
                close(pdata);
                pdata = s;
 #if defined(IP_TOS) && defined(HAVE_SETSOCKOPT)
-               {
-                   int tos = IPTOS_THROUGHPUT;
-
-                   setsockopt(s, IPPROTO_IP, IP_TOS, (void *)&tos,
-                              sizeof(tos));
-               }
+               if (from->sa_family == AF_INET)
+                   socket_set_tos(s, IPTOS_THROUGHPUT);
 #endif
                reply(150, "Opening %s mode data connection for '%s'%s.",
                     type == TYPE_A ? "ASCII" : "BINARY", name, sizebuf);