Diff for /tftpd/src/srv.c between versions 1.2.2.6 and 1.2.2.7

version 1.2.2.6, 2014/02/20 15:39:15 version 1.2.2.7, 2014/02/20 16:04:03
Line 129  getOpts(rpack_t * __restrict pkt, int rlen) Line 129  getOpts(rpack_t * __restrict pkt, int rlen)
         char *opt, *val;          char *opt, *val;
         int len;          int len;
   
           if (!rlen)
                   return -1;
   
         do {          do {
                 /* option */                  /* option */
                 len = str_getString(RPACK_NEXT(pkt), RPACK_REMAIN(pkt), NULL);                  len = str_getString(RPACK_NEXT(pkt), RPACK_REMAIN(pkt), NULL);
Line 139  getOpts(rpack_t * __restrict pkt, int rlen) Line 142  getOpts(rpack_t * __restrict pkt, int rlen)
                 opt = (char*) rpack_rnext(pkt, len);                  opt = (char*) rpack_rnext(pkt, len);
                 if (!opt)                  if (!opt)
                         return -1;                          return -1;
                   EVERBOSE(7, "opt=%s rlen=%d", opt, rlen);
                 /* value */                  /* value */
                 len = str_getString(RPACK_NEXT(pkt), RPACK_REMAIN(pkt), NULL);                  len = str_getString(RPACK_NEXT(pkt), RPACK_REMAIN(pkt), NULL);
                 if (len == -1)                  if (len == -1)
Line 148  getOpts(rpack_t * __restrict pkt, int rlen) Line 152  getOpts(rpack_t * __restrict pkt, int rlen)
                 val = (char*) rpack_rnext(pkt, len);                  val = (char*) rpack_rnext(pkt, len);
                 if (!val)                  if (!val)
                         return -1;                          return -1;
                   EVERBOSE(7, "val=%s rlen=%d", val, rlen);
   
                 if (!strcasecmp(opt, TFTP_OPT_BLKSIZE)) {                  if (!strcasecmp(opt, TFTP_OPT_BLKSIZE)) {
                        len = strtol(val, NULL, 10);                        cli.tmp = strtol(val, NULL, 10);
                        if (len > TFTP_LOAD_MAX) { 
                                cli.siz = len; 
                                if (rpack_resize(pkt, cli.siz + 4)) 
                                        cli.siz = TFTP_PKT_MAX; 
                        } 
                 } else if (!strcasecmp(opt, TFTP_OPT_TSIZE))                  } else if (!strcasecmp(opt, TFTP_OPT_TSIZE))
                         cli.tsiz = strtoll(val, NULL, 10);                          cli.tsiz = strtoll(val, NULL, 10);
                 else if (!strcasecmp(opt, TFTP_OPT_TIMEOUT))                  else if (!strcasecmp(opt, TFTP_OPT_TIMEOUT))
                         cli.tout = strtol(val, NULL, 10);                          cli.tout = strtol(val, NULL, 10);
                 else if (!strcasecmp(opt, TFTP_OPT_ROLLOVER))                  else if (!strcasecmp(opt, TFTP_OPT_ROLLOVER))
                         cli.roll = strtol(val, NULL, 10);                          cli.roll = strtol(val, NULL, 10);
                 else  
                         return -1;  
         } while (rlen > 0);          } while (rlen > 0);
   
         EVERBOSE(4, "blksize=%u tsize=%llu timeout=%u rollover=%u",           EVERBOSE(4, "blksize=%u tsize=%llu timeout=%u rollover=%u", 
Line 292  RQ(sched_task_t *task) Line 290  RQ(sched_task_t *task)
   
         schedEvent(TASK_ROOT(task), execProg, "request", 0, NULL, cli.opc);          schedEvent(TASK_ROOT(task), execProg, "request", 0, NULL, cli.opc);
   
        if (!RPACK_ISEND(pkt) && !getOpts(pkt, rlen))        if (!getOpts(pkt, rlen)) {
                 if (cli.tmp > TFTP_LOAD_MAX) {
                         if (rpack_resize(pkt, cli.tmp + 4))
                                 ELIBERR(elwix);
                         else
                                 cli.siz = cli.tmp;
                 }
                 schedEvent(TASK_ROOT(task), txOack, NULL, TASK_FD(task),                   schedEvent(TASK_ROOT(task), txOack, NULL, TASK_FD(task), 
                                 TASK_DATA(task), 0);                                  TASK_DATA(task), 0);
        else if (cli.opc == TFTP_OPC_WRQ) {        } else if (cli.opc == TFTP_OPC_WRQ) {
                 /* ack */                  /* ack */
                 tftp->tftp_opc = htons(TFTP_OPC_ACK);                  tftp->tftp_opc = htons(TFTP_OPC_ACK);
                 RPACK_REWIND(pkt);                  RPACK_REWIND(pkt);

Removed from v.1.2.2.6  
changed lines
  Added in v.1.2.2.7


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>