Blob Blame History Raw
diff --git a/globus_i_gfs_config.c b/gridftp/server/src/globus_i_gfs_config.c
index 3f84549..022f83b 100644
--- a/globus_i_gfs_config.c
+++ b/globus_i_gfs_config.c
@@ -430,6 +430,8 @@ static const globus_l_gfs_config_option_t option_list[] =
     "This, along with -data-interface, can be used to enable operation behind "
     "a firewall and/or when NAT is involved. "
     "This is the same as setting the environment variable GLOBUS_TCP_PORT_RANGE.", NULL, NULL, GLOBUS_FALSE, NULL},
+ {"epsv_ip", "epsv_ip", NULL, "epsv-ip", NULL, GLOBUS_L_GFS_CONFIG_BOOL, GLOBUS_FALSE, NULL,
+    "Adds an IPv6 address to EPSV response. Breaks RFC 2428, but allows redirection to work with IPv6.", NULL, NULL, GLOBUS_FALSE, NULL},
 {NULL, "User Messages", NULL, NULL, NULL, 0, 0, NULL, NULL, NULL, NULL,GLOBUS_FALSE, NULL},
  {"banner", "banner", NULL, "banner", NULL, GLOBUS_L_GFS_CONFIG_STRING, 0, NULL,
     "Message to display to the client before authentication.", NULL, NULL,GLOBUS_TRUE, NULL},
diff --git a/globus_i_gfs_control.c b/gridftp/server/src/globus_i_gfs_control.c
index 547ac0a..7a7f35d 100644
--- a/globus_i_gfs_control.c
+++ b/globus_i_gfs_control.c
@@ -3664,6 +3664,13 @@ globus_i_gfs_control_start(
         goto error_attr_setup;
     }
 
+    result = globus_gridftp_server_control_attr_set_epsv_ip(
+        attr, globus_i_gfs_config_bool("epsv_ip"));
+    if(result != GLOBUS_SUCCESS)
+    {
+        goto error_attr_setup;
+    }
+
     idle_timeout = globus_i_gfs_config_int("control_idle_timeout");
     preauth_timeout = globus_i_gfs_config_int("control_preauth_timeout");