|
|
| version 1.7, 2014/02/24 15:23:39 | version 1.7.2.4, 2014/02/24 22:26:11 |
|---|---|
| Line 171 txAck(sched_task_t *task) | Line 171 txAck(sched_task_t *task) |
| schedCancelby(TASK_ROOT(task), taskTIMER, CRITERIA_CALL, timeoutSession, NULL); | schedCancelby(TASK_ROOT(task), taskTIMER, CRITERIA_CALL, timeoutSession, NULL); |
| schedEvent(TASK_ROOT(task), timeoutSession, NULL, 0, TASK_DATA(task), 0); | schedEvent(TASK_ROOT(task), timeoutSession, NULL, 0, TASK_DATA(task), 0); |
| EVERBOSE(2, "Finish WRQ request"); | EVERBOSE(2, "Finish WRQ request"); |
| schedResumeby(TASK_ROOT(task), CRITERIA_ID, 0); | |
| } | } |
| taskExit(task, NULL); | taskExit(task, NULL); |
| } | } |
| Line 285 RQ(sched_task_t *task) | Line 286 RQ(sched_task_t *task) |
| cli.siz = TFTP_LOAD_MAX; | cli.siz = TFTP_LOAD_MAX; |
| cli.opc = ntohs(rpack_uint16(pkt, NULL, 0)); | cli.opc = ntohs(rpack_uint16(pkt, NULL, 0)); |
| if (!RW && cli.opc == TFTP_OPC_WRQ) { | |
| code = htons(2); | |
| goto end; | |
| } | |
| len = str_getString(RPACK_NEXT(pkt), rlen, &str); | len = str_getString(RPACK_NEXT(pkt), rlen, &str); |
| if (len == -1) | if (len == -1) |
| goto end; | goto end; |
| Line 473 DATA(sched_task_t *task) | Line 478 DATA(sched_task_t *task) |
| EVERBOSE(3, "DATA:: seq=%hu; len=%d", cli.seq, len); | EVERBOSE(3, "DATA:: seq=%hu; len=%d", cli.seq, len); |
| if (!bf) | if (len > 0) { |
| len = pwrite(cli.fd, RPACK_NEXT(pkt), len, (cli.seq - 1) * cli.siz); | if (!bf) |
| else | len = pwrite(cli.fd, RPACK_NEXT(pkt), len, (cli.seq - 1) * cli.siz); |
| len = bfwrite(cli.fd, RPACK_NEXT(pkt), len); | else |
| if (len == -1) { | len = bfwrite(cli.fd, RPACK_NEXT(pkt), len); |
| ESYSERR(0); | if (len == -1) { |
| code = htons(3); | ESYSERR(0); |
| goto end; | code = htons(3); |
| } else { | goto end; |
| rpack_rnext(pkt, len); | } else |
| EVERBOSE(3, "Written to file %s %d bytes", cli.file, len); | rpack_rnext(pkt, len); |
| } | } |
| EVERBOSE(3, "Written to file %s %d bytes", cli.file, len); | |
| schedEvent(TASK_ROOT(task), txAck, NULL, TASK_FD(task), TASK_DATA(task), 0); | schedEvent(TASK_ROOT(task), txAck, NULL, TASK_FD(task), TASK_DATA(task), 0); |
| taskExit(task, NULL); | taskExit(task, NULL); |