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");