diff options
Diffstat (limited to 'tests/server')
| -rw-r--r-- | tests/server/tftpd.c | 21 | 
1 files changed, 7 insertions, 14 deletions
diff --git a/tests/server/tftpd.c b/tests/server/tftpd.c index c4a21a645..745efad3a 100644 --- a/tests/server/tftpd.c +++ b/tests/server/tftpd.c @@ -268,15 +268,6 @@ static struct tftphdr *w_init(void);  static struct tftphdr *r_init(void); -static int readit(struct testcase *test, -                  struct tftphdr **dpp, -                  int convert); - -static int writeit(struct testcase *test, -                   struct tftphdr **dpp, -                   int ct, -                   int convert); -  static void read_ahead(struct testcase *test, int convert);  static ssize_t write_behind(struct testcase *test, int convert); @@ -539,7 +530,7 @@ static void read_ahead(struct testcase *test,  /* Update count associated with the buffer, get new buffer from the queue.     Calls write_behind only if next buffer not available.   */ -static int writeit(struct testcase *test, struct tftphdr **dpp, +static int writeit(struct testcase *test, struct tftphdr * volatile *dpp,                     int ct, int convert)  {    bfs[current].counter = ct;      /* set size of data to write */ @@ -1211,7 +1202,8 @@ static void sendtftp(struct testcase *test, struct formats *pf)  {    int size;    ssize_t n; -  unsigned short sendblock; /* block count */ +  /* This is volatile to live through a siglongjmp */ +  volatile unsigned short sendblock; /* block count */    struct tftphdr *sdp;      /* data buffer */    struct tftphdr *sap;      /* ack buffer */ @@ -1289,15 +1281,16 @@ static void sendtftp(struct testcase *test, struct formats *pf)  static void recvtftp(struct testcase *test, struct formats *pf)  {    ssize_t n, size; -  unsigned short recvblock; /* block count */ -  struct tftphdr *rdp;      /* data buffer */ +  /* These are volatile to live through a siglongjmp */ +  volatile unsigned short recvblock; /* block count */ +  struct tftphdr * volatile rdp;     /* data buffer */    struct tftphdr *rap;      /* ack buffer */    recvblock = 0; +  rdp = w_init();  #if defined(HAVE_ALARM) && defined(SIGALRM)    mysignal(SIGALRM, timer);  #endif -  rdp = w_init();    rap = &ackbuf.hdr;    do {      timeout = 0;  | 
