summaryrefslogtreecommitdiff
path: root/package/atftp/patches/patch-tftp_file_c
diff options
context:
space:
mode:
Diffstat (limited to 'package/atftp/patches/patch-tftp_file_c')
-rw-r--r--package/atftp/patches/patch-tftp_file_c64
1 files changed, 64 insertions, 0 deletions
diff --git a/package/atftp/patches/patch-tftp_file_c b/package/atftp/patches/patch-tftp_file_c
new file mode 100644
index 000000000..b071b1cf7
--- /dev/null
+++ b/package/atftp/patches/patch-tftp_file_c
@@ -0,0 +1,64 @@
+$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
+--- atftp-0.7.orig/tftp_file.c 2004-02-13 04:16:09.000000000 +0100
++++ atftp-0.7/tftp_file.c 2008-10-09 11:58:48.000000000 +0200
+@@ -123,6 +123,7 @@ int tftp_receive_file(struct client_data
+ struct tftphdr *tftphdr = (struct tftphdr *)data->data_buffer;
+ FILE *fp = NULL; /* the local file pointer */
+ int number_of_timeout = 0;
++ int num_retry = atoi(data->tftp_options[OPT_RETRY].value);
+ int convert = 0; /* if true, do netascii convertion */
+
+ int oacks = 0; /* count OACK for improved error checking */
+@@ -141,7 +142,7 @@ int tftp_receive_file(struct client_data
+
+ int prev_block_number = 0; /* needed to support netascii convertion */
+ int temp = 0;
+-
++
+ data->file_size = 0;
+ tftp_cancel = 0;
+ from.sin_addr.s_addr = 0;
+@@ -288,7 +289,7 @@ int tftp_receive_file(struct client_data
+ case GET_TIMEOUT:
+ number_of_timeout++;
+ fprintf(stderr, "timeout: retrying...\n");
+- if (number_of_timeout > NB_OF_RETRY)
++ if ((num_retry > 0) && (number_of_timeout > num_retry))
+ state = S_ABORT;
+ else
+ state = timeout_state;
+@@ -325,7 +326,7 @@ int tftp_receive_file(struct client_data
+ number_of_timeout++;
+ fprintf(stderr, "tftp: packet discard <%s:%d>.\n",
+ inet_ntoa(from.sin_addr), ntohs(from.sin_port));
+- if (number_of_timeout > NB_OF_RETRY)
++ if ((num_retry > 0) && (number_of_timeout > num_retry))
+ state = S_ABORT;
+ break;
+ case ERR:
+@@ -614,6 +615,7 @@ int tftp_send_file(struct client_data *d
+ struct tftphdr *tftphdr = (struct tftphdr *)data->data_buffer;
+ FILE *fp; /* the local file pointer */
+ int number_of_timeout = 0;
++ int num_retry = atoi(data->tftp_options[OPT_RETRY].value);
+ struct stat file_stat;
+ int convert = 0; /* if true, do netascii convertion */
+ char string[MAXLEN];
+@@ -751,7 +753,7 @@ int tftp_send_file(struct client_data *d
+ case GET_TIMEOUT:
+ number_of_timeout++;
+ fprintf(stderr, "timeout: retrying...\n");
+- if (number_of_timeout > NB_OF_RETRY)
++ if ((num_retry > 0) && (number_of_timeout > num_retry))
+ state = S_ABORT;
+ else
+ state = timeout_state;
+@@ -797,7 +799,7 @@ int tftp_send_file(struct client_data *d
+ number_of_timeout++;
+ fprintf(stderr, "tftp: packet discard <%s:%d>.\n",
+ inet_ntoa(from.sin_addr), ntohs(from.sin_port));
+- if (number_of_timeout > NB_OF_RETRY)
++ if ((num_retry > 0) && (number_of_timeout > num_retry))
+ state = S_ABORT;
+ break;
+ case ERR: