Mercurial > gftp.yaz
diff lib/rfc2068.c @ 84:7ef60ce2bdb2
2002-12-29 Brian Masney <masneyb@gftp.org>
* lib/ssh.c lib/config_file.c lib/Makefile.am lib/gftp.h lib/options.h - removed old legacy SSH protocol and option to enable this protocol
* lib/gftp.h - added GFTP_ERETRYABLE and GFTP_EFATAL error codes
* lib/bookmark.c lib/local.c lib/protocols.c lib/rfc959.c lib/rfc2068.c
lib/sshv2.c - return new error codes instead of -1 or -2
* lib/misc.c (gftp_*_sort_function_ds) - changed return values
* src/gtk/transfer.c (connect_thread) - if return value of
gftp_connect() is GFTP_EFATAL, don't attempt to retry the connection
author | masneyb |
---|---|
date | Sun, 29 Dec 2002 15:16:27 +0000 |
parents | 41b71c4e5076 |
children | 6df043359b41 |
line wrap: on
line diff
--- a/lib/rfc2068.c Fri Dec 27 14:59:50 2002 +0000 +++ b/lib/rfc2068.c Sun Dec 29 15:16:27 2002 +0000 @@ -82,14 +82,15 @@ gftp_getline_buffer * rbuf; rfc2068_params * params; char tempstr[255]; + int ret; params = request->protocol_data; params->max_bytes = 0; rbuf = NULL; - if (gftp_get_line (request, &rbuf, tempstr, sizeof (tempstr), - request->sockfd) < 0) - return (-1); + if ((ret = gftp_get_line (request, &rbuf, tempstr, sizeof (tempstr), + request->sockfd)) < 0) + return (ret); if (request->last_ftp_response) g_free (request->last_ftp_response); @@ -103,9 +104,9 @@ while (1) { /* Read rest of proxy header */ - if (gftp_get_line (request, &rbuf, tempstr, sizeof (tempstr), - request->sockfd) < 0) - return (-1); + if ((ret = gftp_get_line (request, &rbuf, tempstr, sizeof (tempstr), + request->sockfd)) < 0) + return (ret); if (*tempstr == '\r' || *tempstr == '\n') break; @@ -130,9 +131,9 @@ char *tempstr, *str; ssize_t ret; - g_return_val_if_fail (request != NULL, -2); - g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, -2); - g_return_val_if_fail (command != NULL, -2); + g_return_val_if_fail (request != NULL, GFTP_EFATAL); + g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, GFTP_EFATAL); + g_return_val_if_fail (command != NULL, GFTP_EFATAL); tempstr = g_strdup_printf ("%sUser-Agent: %s\nHost: %s\n", command, version, request->hostname); @@ -144,7 +145,7 @@ g_free (tempstr); if (ret < 0) - return (-1); + return (ret); if (request->use_proxy && request->proxy_username != NULL && *request->proxy_username != '\0') @@ -160,7 +161,7 @@ "Proxy-authorization: Basic %s\n", str); g_free (str); if (ret < 0) - return (-2); + return (ret); } if (request->username != NULL && *request->username != '\0') @@ -175,19 +176,20 @@ "Authorization: Basic %s\n", str); g_free (str); if (ret < 0) - return (-2); + return (ret); } if (extrahdr) { request->logging_function (gftp_logging_send, request->user_data, "%s", extrahdr); - if (gftp_write (request, extrahdr, strlen (extrahdr), request->sockfd) < 0) - return (-1); + if ((ret = gftp_write (request, extrahdr, strlen (extrahdr), + request->sockfd)) < 0) + return (ret); } - if (gftp_write (request, "\n", 1, request->sockfd) < 0) - return (-1); + if ((ret = gftp_write (request, "\n", 1, request->sockfd)) < 0) + return (ret); return (rfc2068_read_response (request)); } @@ -198,9 +200,9 @@ { char *service; - g_return_val_if_fail (request != NULL, -2); - g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, -2); - g_return_val_if_fail (request->hostname != NULL, -2); + g_return_val_if_fail (request != NULL, GFTP_EFATAL); + g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, GFTP_EFATAL); + g_return_val_if_fail (request->hostname != NULL, GFTP_EFATAL); if (request->sockfd > 0) return (0); @@ -208,7 +210,7 @@ service = request->use_proxy && request->proxy_config != NULL && *request->proxy_config != '\0' ? request->proxy_config : "http"; if ((request->sockfd = gftp_connect_server (request, service)) < 0) - return (-1); + return (GFTP_ERETRYABLE); if (request->directory && *request->directory == '\0') { @@ -253,18 +255,18 @@ off_t startsize) { char *tempstr, *extrahdr, *pos, *proto; - int restarted; + int restarted, ret; off_t size; - g_return_val_if_fail (request != NULL, -2); - g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, -2); - g_return_val_if_fail (filename != NULL, -2); + g_return_val_if_fail (request != NULL, GFTP_EFATAL); + g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, GFTP_EFATAL); + g_return_val_if_fail (filename != NULL, GFTP_EFATAL); if (fd > 0) request->sockfd = fd; - if (request->sockfd < 0 && rfc2068_connect (request) != 0) - return (-2); + if (request->sockfd < 0 && (ret = rfc2068_connect (request)) != 0) + return (ret); if (request->proxy_config != NULL && *request->proxy_config != '\0') proto = request->proxy_config; @@ -307,7 +309,7 @@ if (extrahdr) g_free (extrahdr); if (size < 0) - return (-1); + return (size); restarted = 0; if (strlen (request->last_ftp_response) > 9 @@ -318,7 +320,7 @@ { request->logging_function (gftp_logging_error, request->user_data, _("Cannot retrieve file %s\n"), filename); - return (-2); + return (GFTP_ERETRYABLE); } return (restarted ? size + startsize : size); @@ -331,8 +333,8 @@ rfc2068_params * params; size_t len; - g_return_val_if_fail (request != NULL, -2); - g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, -2); + g_return_val_if_fail (request != NULL, GFTP_EFATAL); + g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, GFTP_EFATAL); params = request->protocol_data; if (params->max_bytes == params->read_bytes) @@ -343,7 +345,7 @@ size = params->max_bytes - params->read_bytes; if ((len = gftp_read (request, buf, size, request->sockfd)) < 0) - return (-2); + return ((ssize_t) len); return (len); } @@ -354,11 +356,11 @@ { rfc2068_params * params; - g_return_val_if_fail (request != NULL, -2); - g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, -2); + g_return_val_if_fail (request != NULL, GFTP_EFATAL); + g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, GFTP_EFATAL); if (request->sockfd < 0) - return (-2); + return (GFTP_EFATAL); if (close (request->sockfd) < 0) request->logging_function (gftp_logging_error, request->user_data, @@ -381,13 +383,14 @@ char *tempstr, *pos, *proto; rfc2068_params *params; off_t ret; + int r; - g_return_val_if_fail (request != NULL, -2); - g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, -2); + g_return_val_if_fail (request != NULL, GFTP_EFATAL); + g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, GFTP_EFATAL); params = request->protocol_data; - if (request->sockfd < 0 && rfc2068_connect (request) != 0) - return (-2); + if (request->sockfd < 0 && (r = rfc2068_connect (request)) < 0) + return (r); if (request->proxy_config != NULL && *request->proxy_config != '\0') proto = request->proxy_config; @@ -411,7 +414,7 @@ ret = rfc2068_send_command (request, tempstr, NULL); g_free (tempstr); if (ret < 0) - return (-1); + return ((int) ret); params->read_bytes = 0; if (strlen (request->last_ftp_response) > 9 && @@ -422,7 +425,7 @@ return (0); } - return (-2); + return (GFTP_ERETRYABLE); } @@ -431,13 +434,14 @@ { char *tempstr, *pos, *proto; off_t size; + int ret; - g_return_val_if_fail (request != NULL, -2); - g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, -2); - g_return_val_if_fail (filename != NULL, -2); + g_return_val_if_fail (request != NULL, GFTP_EFATAL); + g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, GFTP_EFATAL); + g_return_val_if_fail (filename != NULL, GFTP_EFATAL); - if (request->sockfd < 0 && rfc2068_connect (request) != 0) - return (-2); + if (request->sockfd < 0 && (ret = rfc2068_connect (request)) != 0) + return (ret); if (request->proxy_config != NULL && *request->proxy_config != '\0') proto = request->proxy_config; @@ -459,9 +463,6 @@ size = rfc2068_send_command (request, tempstr, NULL); g_free (tempstr); - if (size < 0) - return (-2); - return (size); } @@ -654,10 +655,11 @@ rfc2068_params * params; char tempstr[255]; size_t len; + int ret; - g_return_val_if_fail (request != NULL, -2); - g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, -2); - g_return_val_if_fail (fle != NULL, -2); + g_return_val_if_fail (request != NULL, GFTP_EFATAL); + g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, GFTP_EFATAL); + g_return_val_if_fail (fle != NULL, GFTP_EFATAL); params = request->protocol_data; if (request->last_dir_entry) @@ -669,8 +671,9 @@ rbuf = NULL; while (1) { - if (gftp_get_line (request, &rbuf, tempstr, sizeof (tempstr), fd) < 0) - return (-2); + if ((ret = gftp_get_line (request, &rbuf, tempstr, sizeof (tempstr), + fd)) < 0) + return (ret); tempstr[sizeof (tempstr) - 1] = '\0'; params->read_bytes += strlen (tempstr); @@ -686,7 +689,7 @@ gftp_file_destroy (fle); if (len < 0) - return (-1); + return (len); return (0); } @@ -703,7 +706,7 @@ if (fle->file == NULL) { gftp_file_destroy (fle); - return (-2); + return (GFTP_ERETRYABLE); /* FIXME is this correct? */ } len = strlen (tempstr); @@ -719,9 +722,9 @@ static int rfc2068_chdir (gftp_request * request, const char *directory) { - g_return_val_if_fail (request != NULL, -2); - g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, -2); - g_return_val_if_fail (directory != NULL, -2); + g_return_val_if_fail (request != NULL, GFTP_EFATAL); + g_return_val_if_fail (request->protonum == GFTP_HTTP_NUM, GFTP_EFATAL); + g_return_val_if_fail (directory != NULL, GFTP_EFATAL); if (request->directory != directory) {