summaryrefslogtreecommitdiffstats
path: root/external/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftp-0.7-sorcerers_apprentice.patch
diff options
context:
space:
mode:
Diffstat (limited to 'external/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftp-0.7-sorcerers_apprentice.patch')
-rw-r--r--external/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftp-0.7-sorcerers_apprentice.patch94
1 files changed, 0 insertions, 94 deletions
diff --git a/external/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftp-0.7-sorcerers_apprentice.patch b/external/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftp-0.7-sorcerers_apprentice.patch
deleted file mode 100644
index fc64291c..00000000
--- a/external/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftp-0.7-sorcerers_apprentice.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-atftp exhibits the well known "Sorcerer's Apprentice Syndrome"(SAS) problem.
-According to RFC 1350, the fix to SAS is quite simple: further copies of the
-acknowledgment for a particular data block would be ignored.
-
-Patch originally from OpenSUSE:
-https://build.opensuse.org/package/view_file?file=atftp-0.7-sorcerers_apprentice.patch&package=atftp.539&project=openSUSE%3A12.1%3AUpdate&rev=84569792975e00573d7df597d2a6e895
-
-Upstream-Status: Pending
-
-Signed-off-by: Roy.Li <rongqing.li@windriver.com>
-Index: atftp-0.7/tftp_file.c
-===================================================================
---- atftp-0.7.orig/tftp_file.c 2011-11-22 15:12:53.792744083 +0100
-+++ atftp-0.7/tftp_file.c 2011-11-22 15:13:51.706421893 +0100
-@@ -605,6 +605,7 @@
- int timeout_state = state; /* what state should we go on when timeout */
- int result;
- long block_number = 0;
-+ long last_requested_block = -1;
- long last_block = -1;
- int data_size; /* size of data received */
- int sockfd = data->sockfd; /* just to simplify calls */
-@@ -765,6 +766,17 @@
- connected = 1;
- }
- block_number = ntohs(tftphdr->th_block);
-+
-+ if (last_requested_block >= block_number)
-+ {
-+ if (data->trace)
-+ fprintf(stderr, "received duplicated ACK <block: %ld >= %ld>\n",
-+ last_requested_block, block_number);
-+ break;
-+ }
-+ else
-+ last_requested_block = block_number;
-+
- if (data->trace)
- fprintf(stderr, "received ACK <block: %ld>\n",
- block_number);
-Index: atftp-0.7/tftpd_file.c
-===================================================================
---- atftp-0.7.orig/tftpd_file.c 2011-11-22 15:12:53.793744112 +0100
-+++ atftp-0.7/tftpd_file.c 2011-11-22 15:15:04.617534260 +0100
-@@ -403,6 +403,7 @@
- int timeout_state = state;
- int result;
- long block_number = 0;
-+ long last_requested_block = -1;
- long last_block = -1;
- int block_loops = 0;
- int data_size;
-@@ -859,6 +860,32 @@
- {
- logger(LOG_DEBUG, "received ACK <block: %d>", block_number);
- }
-+
-+ /* check whether the block request isn't already fulfilled */
-+
-+ /* multicast, block numbers could contain gaps */
-+ if (multicast) {
-+ if (last_requested_block >= block_number)
-+ {
-+ if (data->trace)
-+ logger(LOG_DEBUG, "received duplicated ACK <block: %d >= %d>", last_requested_block, block_number);
-+ break;
-+ }
-+ else
-+ last_requested_block = block_number;
-+ /* unicast, blocks should be requested one after another */
-+ } else {
-+ if (last_requested_block + 1 != block_number && last_requested_block != -1)
-+ {
-+ if (data->trace)
-+ logger(LOG_DEBUG, "received out of order ACK <block: %d != %d>", last_requested_block + 1, block_number);
-+ break;
-+ }
-+ else
-+ last_requested_block = block_number;
-+ }
-+
-+
- if (ntohs(tftphdr->th_block) == 65535)
- {
- block_loops++;
-@@ -958,6 +985,8 @@
- /* nedd to send an oack to that client */
- state = S_SEND_OACK;
- fseek(fp, 0, SEEK_SET);
-+ /* reset the last block received counter */
-+ last_requested_block = -1;
- }
- else
- {