diff -urN curl-7.19.5/lib/tftp.c curl-7.19.5-cleanfinal/lib/tftp.c
--- curl-7.19.5/lib/tftp.c	2009-05-10 17:18:28.000000000 -0400
+++ curl-7.19.5-cleanfinal/lib/tftp.c	2009-08-05 11:43:35.000000000 -0400
@@ -84,6 +84,7 @@
 
 /* RFC2348 allows the block size to be negotiated */
 #define TFTP_BLKSIZE_DEFAULT 512
+#define TFTP_BLKSIZE_DESIRED 1428
 #define TFTP_BLKSIZE_MIN 8
 #define TFTP_BLKSIZE_MAX 65464
 #define TFTP_OPTION_BLKSIZE "blksize"
@@ -336,6 +338,7 @@
 {
   const char *tmp = ptr;
   struct SessionHandle *data = state->conn->data;
+  long tsize = 0;
 
   /* if OACK doesn't contain blksize option, the default (512) must be used */
   state->blksize = TFTP_BLKSIZE_DEFAULT;
@@ -384,7 +387,6 @@
         state->blksize, "requested", state->requested_blksize);
     }
     else if(checkprefix(option, TFTP_OPTION_TSIZE)) {
-      long tsize = 0;
 
       tsize = strtol( value, NULL, 10 );
       if(!tsize) {
@@ -553,7 +555,7 @@
 static CURLcode tftp_rx(tftp_state_data_t *state, tftp_event_t event)
 {
   int sbytes;
-  int rblock;
+  unsigned short rblock;
   struct SessionHandle *data = state->conn->data;
 
   switch(event) {
@@ -835,7 +837,7 @@
   tftp_state_data_t *state;
   int blksize, rc;
 
-  blksize = TFTP_BLKSIZE_DEFAULT;
+  blksize = TFTP_BLKSIZE_DESIRED;
 
   /* If there already is a protocol-specific struct allocated for this
      sessionhandle, deal with it */
@@ -875,7 +877,7 @@
   state->state = TFTP_STATE_START;
   state->error = TFTP_ERR_NONE;
   state->blksize = TFTP_BLKSIZE_DEFAULT;
-  state->requested_blksize = blksize;
+  state->requested_blksize = TFTP_BLKSIZE_DESIRED;
 
   ((struct sockaddr *)&state->local_addr)->sa_family =
     (unsigned short)(conn->ip_addr->ai_family);
