Lines Matching +full:no +full:- +full:fallthrough
8 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
49 * Helper read-from-socket functions. Does the same as Curl_read() but it
50 * blocks until all bytes amount of buffersize will be read. No more, no less.
94 buffersize -= nread; in Curl_blockread_all()
117 struct connectdata *conn = data->conn; in socksstate()
118 enum connect_t oldstate = conn->cnnct.state; in socksstate()
147 conn->cnnct.state = state; in socksstate()
152 statename[oldstate], statename[conn->cnnct.state], conn, in socksstate()
161 sock[0] = conn->sock[sockindex]; in Curl_SOCKS_getsock()
162 switch(conn->cnnct.state) { in Curl_SOCKS_getsock()
195 struct connectdata *conn = data->conn; in Curl_SOCKS4()
197 (conn->socks_proxy.proxytype == CURLPROXY_SOCKS4A) ? TRUE : FALSE; in Curl_SOCKS4()
198 unsigned char *socksreq = (unsigned char *)data->state.buffer; in Curl_SOCKS4()
200 curl_socket_t sockfd = conn->sock[sockindex]; in Curl_SOCKS4()
201 struct connstate *sx = &conn->cnnct; in Curl_SOCKS4()
209 if(!SOCKS_STATE(sx->state) && !*done) in Curl_SOCKS4()
212 switch(sx->state) { in Curl_SOCKS4()
215 conn->ip_version = CURL_IPRESOLVE_V4; in Curl_SOCKS4()
216 if(conn->bits.httpproxy) in Curl_SOCKS4()
227 * +----+----+----+----+----+----+----+----+----+----+....+----+ in Curl_SOCKS4()
229 * +----+----+----+----+----+----+----+----+----+----+....+----+ in Curl_SOCKS4()
247 infof(data, "SOCKS4 non-blocking resolve of %s", hostname); in Curl_SOCKS4()
260 dns = Curl_fetch_addr(data, hostname, (int)conn->port); in Curl_SOCKS4()
264 data->state.async.dns = dns; in Curl_SOCKS4()
265 data->state.async.done = TRUE; in Curl_SOCKS4()
278 /* FALLTHROUGH */ in Curl_SOCKS4()
287 hp = dns->addr; in Curl_SOCKS4()
290 while(hp && (hp->ai_family != AF_INET)) in Curl_SOCKS4()
291 hp = hp->ai_next; in Curl_SOCKS4()
298 saddr_in = (struct sockaddr_in *)(void *)hp->ai_addr; in Curl_SOCKS4()
299 socksreq[4] = ((unsigned char *)&saddr_in->sin_addr.s_addr)[0]; in Curl_SOCKS4()
300 socksreq[5] = ((unsigned char *)&saddr_in->sin_addr.s_addr)[1]; in Curl_SOCKS4()
301 socksreq[6] = ((unsigned char *)&saddr_in->sin_addr.s_addr)[2]; in Curl_SOCKS4()
302 socksreq[7] = ((unsigned char *)&saddr_in->sin_addr.s_addr)[3]; in Curl_SOCKS4()
318 /* FALLTHROUGH */ in Curl_SOCKS4()
324 socksreq[8] = 0; /* ensure empty userid is NUL-terminated */ in Curl_SOCKS4()
327 if(plen >= (size_t)data->set.buffer_size - 8) { in Curl_SOCKS4()
359 sx->outp = socksreq; in Curl_SOCKS4()
360 sx->outstanding = packetsize; in Curl_SOCKS4()
363 /* FALLTHROUGH */ in Curl_SOCKS4()
366 result = Curl_write_plain(data, sockfd, (char *)sx->outp, in Curl_SOCKS4()
367 sx->outstanding, &written); in Curl_SOCKS4()
372 if(written != sx->outstanding) { in Curl_SOCKS4()
374 sx->outstanding -= written; in Curl_SOCKS4()
375 sx->outp += written; in Curl_SOCKS4()
380 sx->outstanding = 8; /* receive data size */ in Curl_SOCKS4()
381 sx->outp = socksreq; in Curl_SOCKS4()
384 /* FALLTHROUGH */ in Curl_SOCKS4()
387 result = Curl_read_plain(sockfd, (char *)sx->outp, in Curl_SOCKS4()
388 sx->outstanding, &actualread); in Curl_SOCKS4()
399 else if(actualread != sx->outstanding) { in Curl_SOCKS4()
401 sx->outstanding -= actualread; in Curl_SOCKS4()
402 sx->outp += actualread; in Curl_SOCKS4()
414 * +----+----+----+----+----+----+----+----+ in Curl_SOCKS4()
416 * +----+----+----+----+----+----+----+----+ in Curl_SOCKS4()
427 * report different user-ids in Curl_SOCKS4()
463 "report different user-ids.", in Curl_SOCKS4()
498 +----+-----+-------+------+----------+----------+ in Curl_SOCKS5()
500 +----+-----+-------+------+----------+----------+ in Curl_SOCKS5()
502 +----+-----+-------+------+----------+----------+ in Curl_SOCKS5()
510 struct connectdata *conn = data->conn; in Curl_SOCKS5()
511 unsigned char *socksreq = (unsigned char *)data->state.buffer; in Curl_SOCKS5()
517 curl_socket_t sockfd = conn->sock[sockindex]; in Curl_SOCKS5()
519 (conn->socks_proxy.proxytype == CURLPROXY_SOCKS5) ? TRUE : FALSE; in Curl_SOCKS5()
522 const unsigned long auth = data->set.socks5auth; in Curl_SOCKS5()
524 struct connstate *sx = &conn->cnnct; in Curl_SOCKS5()
527 if(!SOCKS_STATE(sx->state) && !*done) in Curl_SOCKS5()
530 switch(sx->state) { in Curl_SOCKS5()
532 if(conn->bits.httpproxy) in Curl_SOCKS5()
558 socksreq[idx++] = 0; /* no authentication */ in Curl_SOCKS5()
560 socksreq[idx++] = 1; /* GSS-API */ in Curl_SOCKS5()
564 socksreq[1] = (unsigned char) (idx - 2); in Curl_SOCKS5()
573 sx->outstanding = idx - written; in Curl_SOCKS5()
574 sx->outp = &socksreq[written]; in Curl_SOCKS5()
580 result = Curl_write_plain(data, sockfd, (char *)sx->outp, in Curl_SOCKS5()
581 sx->outstanding, &written); in Curl_SOCKS5()
586 if(written != sx->outstanding) { in Curl_SOCKS5()
588 sx->outstanding -= written; in Curl_SOCKS5()
589 sx->outp += written; in Curl_SOCKS5()
592 /* FALLTHROUGH */ in Curl_SOCKS5()
595 sx->outstanding = 2; /* expect two bytes */ in Curl_SOCKS5()
596 sx->outp = socksreq; /* store it here */ in Curl_SOCKS5()
597 /* FALLTHROUGH */ in Curl_SOCKS5()
599 result = Curl_read_plain(sockfd, (char *)sx->outp, in Curl_SOCKS5()
600 sx->outstanding, &actualread); in Curl_SOCKS5()
610 else if(actualread != sx->outstanding) { in Curl_SOCKS5()
612 sx->outstanding -= actualread; in Curl_SOCKS5()
613 sx->outp += actualread; in Curl_SOCKS5()
621 /* DONE! No authentication needed. Send request. */ in Curl_SOCKS5()
635 failf(data, "Unable to negotiate SOCKS5 GSS-API context."); in Curl_SOCKS5()
644 "SOCKS5 GSSAPI per-message authentication is not supported."); in Curl_SOCKS5()
648 failf(data, "No authentication method was acceptable."); in Curl_SOCKS5()
657 /* GSSAPI stuff done non-blocking */ in Curl_SOCKS5()
678 * +----+------+----------+------+----------+ in Curl_SOCKS5()
680 * +----+------+----------+------+----------+ in Curl_SOCKS5()
682 * +----+------+----------+------+----------+ in Curl_SOCKS5()
707 sx->outstanding = len; in Curl_SOCKS5()
708 sx->outp = socksreq; in Curl_SOCKS5()
710 /* FALLTHROUGH */ in Curl_SOCKS5()
712 result = Curl_write_plain(data, sockfd, (char *)sx->outp, in Curl_SOCKS5()
713 sx->outstanding, &written); in Curl_SOCKS5()
715 failf(data, "Failed to send SOCKS5 sub-negotiation request."); in Curl_SOCKS5()
718 if(sx->outstanding != written) { in Curl_SOCKS5()
720 sx->outstanding -= written; in Curl_SOCKS5()
721 sx->outp += written; in Curl_SOCKS5()
724 sx->outp = socksreq; in Curl_SOCKS5()
725 sx->outstanding = 2; in Curl_SOCKS5()
727 /* FALLTHROUGH */ in Curl_SOCKS5()
729 result = Curl_read_plain(sockfd, (char *)sx->outp, in Curl_SOCKS5()
730 sx->outstanding, &actualread); in Curl_SOCKS5()
732 failf(data, "Unable to receive SOCKS5 sub-negotiation response."); in Curl_SOCKS5()
740 else if(actualread != sx->outstanding) { in Curl_SOCKS5()
742 sx->outstanding -= actualread; in Curl_SOCKS5()
743 sx->outp += actualread; in Curl_SOCKS5()
755 /* FALLTHROUGH */ in Curl_SOCKS5()
780 data->state.async.dns = dns; in Curl_SOCKS5()
781 data->state.async.done = TRUE; in Curl_SOCKS5()
794 /* FALLTHROUGH */ in Curl_SOCKS5()
800 hp = dns->addr; in Curl_SOCKS5()
809 msnprintf(dest + destlen, sizeof(dest) - destlen, ":%d", remote_port); in Curl_SOCKS5()
815 if(hp->ai_family == AF_INET) { in Curl_SOCKS5()
820 saddr_in = (struct sockaddr_in *)(void *)hp->ai_addr; in Curl_SOCKS5()
822 socksreq[len++] = ((unsigned char *)&saddr_in->sin_addr.s_addr)[i]; in Curl_SOCKS5()
828 else if(hp->ai_family == AF_INET6) { in Curl_SOCKS5()
833 saddr_in6 = (struct sockaddr_in6 *)(void *)hp->ai_addr; in Curl_SOCKS5()
836 ((unsigned char *)&saddr_in6->sin6_addr.s6_addr)[i]; in Curl_SOCKS5()
866 /* FALLTHROUGH */ in Curl_SOCKS5()
876 if(conn->socks5_gssapi_enctype) { in Curl_SOCKS5()
877 failf(data, "SOCKS5 GSS-API protection not yet implemented."); in Curl_SOCKS5()
881 sx->outp = socksreq; in Curl_SOCKS5()
882 sx->outstanding = len; in Curl_SOCKS5()
884 /* FALLTHROUGH */ in Curl_SOCKS5()
886 result = Curl_write_plain(data, sockfd, (char *)sx->outp, in Curl_SOCKS5()
887 sx->outstanding, &written); in Curl_SOCKS5()
892 if(sx->outstanding != written) { in Curl_SOCKS5()
894 sx->outstanding -= written; in Curl_SOCKS5()
895 sx->outp += written; in Curl_SOCKS5()
899 if(conn->socks5_gssapi_enctype) { in Curl_SOCKS5()
900 failf(data, "SOCKS5 GSS-API protection not yet implemented."); in Curl_SOCKS5()
904 sx->outstanding = 10; /* minimum packet size is 10 */ in Curl_SOCKS5()
905 sx->outp = socksreq; in Curl_SOCKS5()
907 /* FALLTHROUGH */ in Curl_SOCKS5()
909 result = Curl_read_plain(sockfd, (char *)sx->outp, in Curl_SOCKS5()
910 sx->outstanding, &actualread); in Curl_SOCKS5()
920 else if(actualread != sx->outstanding) { in Curl_SOCKS5()
922 sx->outstanding -= actualread; in Curl_SOCKS5()
923 sx->outp += actualread; in Curl_SOCKS5()
959 +----+-----+-------+------+----------+----------+ in Curl_SOCKS5()
961 +----+-----+-------+------+----------+----------+ in Curl_SOCKS5()
963 +----+-----+-------+------+----------+----------+ in Curl_SOCKS5()
991 if(!conn->socks5_gssapi_enctype) { in Curl_SOCKS5()
995 sx->outstanding = len - 10; /* get the rest */ in Curl_SOCKS5()
996 sx->outp = &socksreq[10]; in Curl_SOCKS5()
1006 /* FALLTHROUGH */ in Curl_SOCKS5()
1008 result = Curl_read_plain(sockfd, (char *)sx->outp, in Curl_SOCKS5()
1009 sx->outstanding, &actualread); in Curl_SOCKS5()
1019 else if(actualread != sx->outstanding) { in Curl_SOCKS5()
1021 sx->outstanding -= actualread; in Curl_SOCKS5()
1022 sx->outp += actualread; in Curl_SOCKS5()