Index: tests/server/tftpd.c
===================================================================
RCS file: /cvsroot/curl/curl/tests/server/tftpd.c,v
retrieving revision 1.27
diff -u -r1.27 tftpd.c
--- tests/server/tftpd.c	27 Sep 2007 01:45:23 -0000	1.27
+++ tests/server/tftpd.c	19 Oct 2007 17:55:26 -0000
@@ -111,7 +111,6 @@
   size_t rcount;  /* amount of data left to read of the file */
   long num;       /* test case number */
   int ofile;      /* file descriptor for output file when uploading to us */
-  FILE *server;   /* write input "protocol" there for client verification */
 };
 
 static int synchnet(curl_socket_t);
@@ -530,8 +529,6 @@
          , port );
 
   do {
-    FILE *server;
-
     fromlen = sizeof(from);
     n = recvfrom(sock, buf, sizeof (buf), 0,
                  (struct sockaddr *)&from, &fromlen);
@@ -558,19 +555,11 @@
     tp->th_opcode = ntohs(tp->th_opcode);
     if (tp->th_opcode == RRQ || tp->th_opcode == WRQ) {
       memset(&test, 0, sizeof(test));
-      server = fopen(REQUEST_DUMP, "ab");
-      if(!server) {
-        error = ERRNO;
-        logmsg("fopen() failed with error: %d %s", error, strerror(error));
-        logmsg("Error opening file: %s", REQUEST_DUMP);
+      if (tftp(&test, tp, n) < 0)
         break;
-      }
-      test.server = server;
-      tftp(&test, tp, n);
       if(test.buffer)
         free(test.buffer);
     }
-    fclose(server);
     sclose(peer);
   } while(1);
   return 0;
@@ -594,9 +583,20 @@
   int first = 1, ecode;
   struct formats *pf;
   char *filename, *mode = NULL;
+  int error;
+  FILE *server;
+
+  /* Open request dump file. */
+  server = fopen(REQUEST_DUMP, "ab");
+  if(!server) {
+    error = ERRNO;
+    logmsg("fopen() failed with error: %d %s", error, strerror(error));
+    logmsg("Error opening file: %s", REQUEST_DUMP);
+    return -1;
+  }
 
   /* store input protocol */
-  fprintf(test->server, "opcode: %x\n", tp->th_opcode);
+  fprintf(server, "opcode: %x\n", tp->th_opcode);
 
   cp = (char *)&tp->th_stuff;
   filename = cp;
@@ -608,6 +608,7 @@
   }
   if (*cp) {
     nak(EBADOP);
+    fclose(server);
     return 3;
   }
   if (first) {
@@ -616,15 +617,15 @@
     goto again;
   }
   /* store input protocol */
-  fprintf(test->server, "filename: %s\n", filename);
+  fprintf(server, "filename: %s\n", filename);
 
   for (cp = mode; *cp; cp++)
     if (isupper((int)*cp))
       *cp = (char)tolower((int)*cp);
 
   /* store input protocol */
-  fprintf(test->server, "mode: %s\n", mode);
-  fflush(test->server);
+  fprintf(server, "mode: %s\n", mode);
+  fclose(server);
 
   for (pf = formats; pf->f_mode; pf++)
     if (strcmp(pf->f_mode, mode) == 0)
