Lines Matching refs:data

120   unsigned char *data;
128 struct Curl_easy *data;
150 static CURLcode tftp_connect(struct Curl_easy *data, bool *done);
151 static CURLcode tftp_disconnect(struct Curl_easy *data,
154 static CURLcode tftp_do(struct Curl_easy *data, bool *done);
155 static CURLcode tftp_done(struct Curl_easy *data,
157 static CURLcode tftp_setup_connection(struct Curl_easy *data,
159 static CURLcode tftp_multi_statemach(struct Curl_easy *data, bool *done);
160 static CURLcode tftp_doing(struct Curl_easy *data, bool *dophase_done);
161 static int tftp_getsock(struct Curl_easy *data, struct connectdata *conn,
210 timeout_ms = Curl_timeleft(state->data, NULL, start);
214 failf(state->data, "Connection time-out");
241 infof(state->data,
262 packet->data[0] = (unsigned char)(num >> 8);
263 packet->data[1] = (unsigned char)(num & 0xff);
269 packet->data[2] = (unsigned char)(num >> 8);
270 packet->data[3] = (unsigned char)(num & 0xff);
275 return (unsigned short)((packet->data[0] << 8) | packet->data[1]);
280 return (unsigned short)((packet->data[2] << 8) | packet->data[3]);
315 struct Curl_easy *data = state->data;
325 failf(data, "Malformed ACK packet, rejecting");
329 infof(data, "got option=(%s) value=(%s)", option, value);
337 failf(data, "invalid blocksize value in OACK packet");
341 failf(data, "%s (%d)", "blksize is larger than max supported",
346 failf(data, "%s (%d)", "blksize is smaller than min supported",
354 failf(data, "%s (%ld)",
360 infof(data, "%s (%d) %s (%d)", "blksize parsed from OACK",
367 infof(data, "%s (%ld)", "tsize parsed from OACK", tsize);
371 if(!data->state.upload) {
373 failf(data, "invalid tsize -:%s:- value in OACK packet", value);
376 Curl_pgrsSetDownloadSize(data, tsize);
399 struct Curl_easy *data = state->data;
401 infof(data, "%s", "Connected for transmit");
415 struct Curl_easy *data = state->data;
417 infof(data, "%s", "Connected for receive");
433 struct Curl_easy *data = state->data;
437 if(data->state.prefer_ascii)
452 if(data->state.upload) {
455 state->data->req.upload_fromhere =
456 (char *)state->spacket.data + 4;
457 if(data->state.infilesize != -1)
458 Curl_pgrsSetUploadSize(data, data->state.infilesize);
467 result = Curl_urldecode(&state->data->state.up.path[1], 0,
473 failf(data, "TFTP file name too long");
478 msnprintf((char *)state->spacket.data + 2,
484 if(!data->set.tftp_no_options) {
487 if(data->state.upload && (data->state.infilesize != -1))
489 data->state.infilesize);
494 (char *)state->spacket.data + sbytes,
498 (char *)state->spacket.data + sbytes, buf);
504 (char *)state->spacket.data + sbytes,
508 (char *)state->spacket.data + sbytes, buf);
514 (char *)state->spacket.data + sbytes,
518 (char *)state->spacket.data + sbytes, buf);
521 failf(data, "TFTP buffer too small for options");
529 senddata = sendto(state->sockfd, (void *)state->spacket.data,
531 &data->conn->remote_addr->sa_addr,
532 data->conn->remote_addr->addrlen);
535 failf(data, "%s", Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
541 if(data->state.upload) {
562 failf(state->data, "tftp_send_first: internal error");
585 struct Curl_easy *data = state->data;
600 infof(data, "Received last DATA packet block %d again.", rblock);
604 infof(data,
614 sbytes = sendto(state->sockfd, (void *)state->spacket.data,
619 failf(data, "%s", Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
634 /* ACK option acknowledgement so we can move on to data */
639 sbytes = sendto(state->sockfd, (void *)state->spacket.data,
644 failf(data, "%s", Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
648 /* we're ready to RX data */
656 infof(data,
665 sbytes = sendto(state->sockfd, (void *)state->spacket.data,
670 failf(data, "%s", Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
679 (void)sendto(state->sockfd, (void *)state->spacket.data,
689 failf(data, "%s", "tftp_rx: internal error");
705 struct Curl_easy *data = state->data;
708 struct SingleRequest *k = &data->req;
728 infof(data, "Received ACK for block %d, expecting %d",
733 failf(data, "tftp_tx: giving up waiting for block %d ack",
738 /* Re-send the data packet */
739 sbytes = sendto(state->sockfd, (void *)state->spacket.data,
745 failf(data, "%s", Curl_strerror(SOCKERRNO,
759 state->block = 1; /* first data block is 1 when using OACK */
769 /* TFTP considers data block size < 512 bytes as an end of session. So
770 * in some cases we must wait for additional data to build full (512 bytes)
771 * data block.
774 state->data->req.upload_fromhere = (char *)state->spacket.data + 4;
776 result = Curl_fillreadbuffer(data, state->blksize - state->sbytes, &cb);
780 state->data->req.upload_fromhere += cb;
783 sbytes = sendto(state->sockfd, (void *) state->spacket.data,
789 failf(data, "%s", Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
794 Curl_pgrsSetUploadCounter(data, k->writebytecount);
800 infof(data, "Timeout waiting for block %d ACK. "
808 /* Re-send the data packet */
809 sbytes = sendto(state->sockfd, (void *)state->spacket.data,
815 failf(data, "%s", Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
819 Curl_pgrsSetUploadCounter(data, k->writebytecount);
827 (void)sendto(state->sockfd, (void *)state->spacket.data, 4, SEND_4TH_ARG,
836 failf(data, "tftp_tx: internal error, event: %i", (int)(event));
906 struct Curl_easy *data = state->data;
910 DEBUGF(infof(data, "TFTP_STATE_START"));
914 DEBUGF(infof(data, "TFTP_STATE_RX"));
918 DEBUGF(infof(data, "TFTP_STATE_TX"));
922 infof(data, "%s", "TFTP finished");
925 DEBUGF(infof(data, "STATE: %d", state->state));
926 failf(data, "%s", "Internal state machine error");
941 static CURLcode tftp_disconnect(struct Curl_easy *data,
945 (void) data;
950 Curl_safefree(state->rpacket.data);
951 Curl_safefree(state->spacket.data);
965 static CURLcode tftp_connect(struct Curl_easy *data, bool *done)
970 struct connectdata *conn = data->conn;
979 if(data->set.tftp_blksize)
981 blksize = (int)data->set.tftp_blksize;
988 if(!state->rpacket.data) {
989 state->rpacket.data = calloc(1, need_blksize + 2 + 2);
991 if(!state->rpacket.data)
995 if(!state->spacket.data) {
996 state->spacket.data = calloc(1, need_blksize + 2 + 2);
998 if(!state->spacket.data)
1006 state->data = data;
1036 failf(data, "bind() failed; %s",
1043 Curl_pgrsStartNow(data);
1057 static CURLcode tftp_done(struct Curl_easy *data, CURLcode status,
1061 struct connectdata *conn = data->conn;
1067 if(Curl_pgrsDone(data))
1084 static int tftp_getsock(struct Curl_easy *data,
1087 (void)data;
1096 * Called once select fires and data is ready on the socket
1099 static CURLcode tftp_receive_packet(struct Curl_easy *data)
1104 struct connectdata *conn = data->conn;
1110 (void *)state->rpacket.data,
1122 failf(data, "Received too short packet");
1136 result = Curl_client_write(data, CLIENTWRITE_BODY,
1137 (char *)state->rpacket.data + 4,
1148 char *str = (char *)state->rpacket.data + 4;
1152 infof(data, "TFTP error: %s", str);
1159 (const char *)state->rpacket.data + 2,
1167 failf(data, "%s", "Internal error: Unexpected packet");
1172 if(Curl_pgrsUpdate(data)) {
1187 static timediff_t tftp_state_timeout(struct Curl_easy *data,
1191 struct connectdata *conn = data->conn;
1198 timeout_ms = Curl_timeleft(state->data, NULL,
1222 static CURLcode tftp_multi_statemach(struct Curl_easy *data, bool *done)
1226 struct connectdata *conn = data->conn;
1228 timediff_t timeout_ms = tftp_state_timeout(data, &event);
1233 failf(data, "TFTP response timeout");
1243 Curl_setup_transfer(data, -1, -1, FALSE, -1);
1253 failf(data, "%s", Curl_strerror(error, buffer, sizeof(buffer)));
1257 result = tftp_receive_packet(data);
1266 Curl_setup_transfer(data, -1, -1, FALSE, -1);
1281 static CURLcode tftp_doing(struct Curl_easy *data, bool *dophase_done)
1284 result = tftp_multi_statemach(data, dophase_done);
1287 DEBUGF(infof(data, "DO phase is complete"));
1293 if(Curl_pgrsUpdate(data))
1296 result = Curl_speedcheck(data, Curl_now());
1308 static CURLcode tftp_perform(struct Curl_easy *data, bool *dophase_done)
1311 struct connectdata *conn = data->conn;
1321 tftp_multi_statemach(data, dophase_done);
1324 DEBUGF(infof(data, "DO phase is complete"));
1340 static CURLcode tftp_do(struct Curl_easy *data, bool *done)
1344 struct connectdata *conn = data->conn;
1349 result = tftp_connect(data, done);
1358 result = tftp_perform(data, done);
1369 static CURLcode tftp_setup_connection(struct Curl_easy *data,
1378 type = strstr(data->state.up.path, ";mode=");
1391 data->state.prefer_ascii = TRUE;
1398 data->state.prefer_ascii = FALSE;