--- globus_2_4_3_adv2003_fix892_fix956_more/gass/server_ez/source/globus_gass_server_ez.c Mon Mar 10 19:07:54 2003 +++ globus_2_4_3_adv2003_fix892_fix956_plus/gass/server_ez/source/globus_gass_server_ez.c Sun Jan 4 19:34:16 2004 @@ -162,6 +162,7 @@ unsigned short port; void * user_arg; globus_l_gass_server_ez_t *server; + globus_bool_t free_scheme=GLOBUS_FALSE; if(scheme==GLOBUS_NULL) @@ -172,6 +173,7 @@ rc = GLOBUS_GASS_TRANSFER_ERROR_MALLOC_FAILED; goto error_exit; } + free_scheme=GLOBUS_TRUE; globus_libc_lock(); sprintf(scheme, "https"); globus_libc_unlock(); @@ -201,6 +203,7 @@ sizeof (globus_l_gass_server_ez_t)); if(server==GLOBUS_NULL) { + rc = GLOBUS_GASS_TRANSFER_ERROR_MALLOC_FAILED; goto error_exit; } @@ -216,14 +219,12 @@ rc=globus_gass_transfer_register_listen(*listener, globus_l_gass_server_ez_listen_callback, (void *)reqattr); - /* insert error handling here*/ - - return GLOBUS_SUCCESS; - error_exit: + if (free_scheme) globus_free(scheme); + return rc; } /* globus_gass_server_ez_init() */ @@ -437,7 +438,7 @@ int rc; char * subjectname; char * message; - char * path; + char * path=GLOBUS_NULL; char * url; globus_url_t parsed_url; globus_gass_transfer_request_type_t type; @@ -463,20 +464,15 @@ url=globus_gass_transfer_request_get_url(request); rc = globus_url_parse(url, &parsed_url); if(rc != GLOBUS_SUCCESS || - parsed_url.url_path == GLOBUS_NULL) - { - globus_gass_transfer_deny(request, 404, "File Not Found"); - globus_gass_transfer_request_destroy(request); - globus_url_destroy(&parsed_url); - goto reregister; - } - if(strlen(parsed_url.url_path) == 0U) + parsed_url.url_path == GLOBUS_NULL || strlen(parsed_url.url_path) == 0U) { globus_gass_transfer_deny(request, 404, "File Not Found"); globus_gass_transfer_request_destroy(request); - globus_url_destroy(&parsed_url); - goto reregister; + if (rc == GLOBUS_SUCCESS) + globus_url_destroy(&parsed_url); + goto reregister_nourl; } + if(globus_gass_transfer_request_get_type(request) == GLOBUS_GASS_TRANSFER_REQUEST_TYPE_APPEND) { @@ -503,9 +499,6 @@ goto deny; } - globus_url_parse(url, - &parsed_url); - /* Expand ~ and ~user prefix if enaabled in options */ rc = globus_l_gass_server_ez_tilde_expand(s->options, parsed_url.url_path, @@ -519,7 +512,6 @@ } else if(strcmp(path, "/dev/stdout") == 0) { - globus_url_destroy(&parsed_url); goto deny; } else if(strcmp(path, "/dev/stderr") == 0 && @@ -530,7 +522,6 @@ } else if(strcmp(path, "/dev/stderr") == 0) { - globus_url_destroy(&parsed_url); goto deny; } else if(strcmp(path, "/dev/globus_gass_client_shutdown") == 0) @@ -540,7 +531,7 @@ { s->callback(); } - globus_url_destroy(&parsed_url); + goto deny; } #ifdef TARGET_ARCH_WIN32 @@ -549,7 +540,7 @@ flags |= O_BINARY; #endif rc = globus_libc_open(path, flags, 0600); - globus_url_destroy(&parsed_url); + if(rc < 0) { goto deny; @@ -587,8 +578,6 @@ case GLOBUS_GASS_TRANSFER_REQUEST_TYPE_GET: flags = O_RDONLY; - globus_url_parse(url, - &parsed_url); /* Expand ~ and ~user prefix if enaabled in options */ rc = globus_l_gass_server_ez_tilde_expand(s->options, @@ -609,13 +598,11 @@ #endif rc = globus_libc_open(path, flags, 0600); fstat(rc, &statstruct); - globus_url_destroy(&parsed_url); } else { globus_gass_transfer_deny(request, 404, "File Not Found"); globus_gass_transfer_request_destroy(request); - globus_url_destroy(&parsed_url); goto reregister; } @@ -643,12 +630,16 @@ } - reregister: - globus_gass_transfer_register_listen( + reregister: + globus_url_destroy(&parsed_url); + + reregister_nourl: + globus_gass_transfer_register_listen( (globus_gass_transfer_listener_t) listener, globus_l_gass_server_ez_listen_callback, s->reqattr); + if (path != GLOBUS_NULL) globus_free(path); } /*globus_l_gass_server_ez_register_accept_callback*/