Lines Matching refs:sx

163 static void socksstate(struct socks_state *sx, struct Curl_easy *data,
170 enum connect_t oldstate = sx->state;
200 sx->state = state;
205 socks_statename[oldstate], socks_statename[sx->state],
211 struct socks_state *sx,
219 nwritten = Curl_conn_cf_send(cf->next, data, (char *)sx->outp,
220 sx->outstanding, &result);
234 DEBUGASSERT(sx->outstanding >= nwritten);
236 sx->outstanding -= nwritten;
237 sx->outp += nwritten;
242 struct socks_state *sx,
250 nread = Curl_conn_cf_recv(cf->next, data, (char *)sx->outp,
251 sx->outstanding, &result);
266 DEBUGASSERT(sx->outstanding >= nread);
267 sx->outstanding -= nread;
268 sx->outp += nread;
284 struct socks_state *sx,
290 unsigned char *socksreq = sx->buffer;
295 switch(sx->state) {
301 protocol4a ? "a" : "", sx->hostname, sx->remote_port);
304 sx->hostname, sx->remote_port);
319 socksreq[2] = (unsigned char)((sx->remote_port >> 8) & 0xff); /* MSB */
320 socksreq[3] = (unsigned char)(sx->remote_port & 0xff); /* LSB */
325 Curl_resolv(data, sx->hostname, sx->remote_port, TRUE, &dns);
330 sxstate(sx, data, CONNECT_RESOLVING);
331 infof(data, "SOCKS4 non-blocking resolve of %s", sx->hostname);
334 sxstate(sx, data, CONNECT_RESOLVED);
339 sxstate(sx, data, CONNECT_REQ_INIT);
344 dns = Curl_fetch_addr(data, sx->hostname, (int)conn->port);
351 infof(data, "Hostname '%s' was found", sx->hostname);
352 sxstate(sx, data, CONNECT_RESOLVED);
394 failf(data, "SOCKS4 connection to %s not supported", sx->hostname);
398 sx->hostname);
410 if(sx->proxy_user) {
411 size_t plen = strlen(sx->proxy_user);
420 memcpy(socksreq + 8, sx->proxy_user, plen + 1);
438 hostnamelen = strlen(sx->hostname) + 1; /* length including NUL */
440 (packetsize + hostnamelen < sizeof(sx->buffer)))
441 strcpy((char *)socksreq + packetsize, sx->hostname);
448 sx->outp = socksreq;
449 DEBUGASSERT(packetsize <= sizeof(sx->buffer));
450 sx->outstanding = packetsize;
451 sxstate(sx, data, CONNECT_REQ_SENDING);
456 presult = socks_state_send(cf, sx, data, CURLPX_SEND_CONNECT,
460 else if(sx->outstanding) {
465 sx->outstanding = 8; /* receive data size */
466 sx->outp = socksreq;
467 sxstate(sx, data, CONNECT_SOCKS_READ);
472 presult = socks_state_recv(cf, sx, data, CURLPX_RECV_CONNECT,
476 else if(sx->outstanding) {
480 sxstate(sx, data, CONNECT_DONE);
561 struct socks_state *sx,
581 unsigned char *socksreq = sx->buffer;
587 const size_t hostname_len = strlen(sx->hostname);
594 switch(sx->state) {
598 sx->hostname, sx->remote_port);
613 sx->proxy_user = NULL;
625 if(sx->proxy_user)
630 sx->outp = socksreq;
631 DEBUGASSERT(idx <= sizeof(sx->buffer));
632 sx->outstanding = idx;
633 presult = socks_state_send(cf, sx, data, CURLPX_SEND_CONNECT,
637 else if(sx->outstanding) {
641 sxstate(sx, data, CONNECT_SOCKS_READ);
644 presult = socks_state_send(cf, sx, data, CURLPX_SEND_CONNECT,
648 else if(sx->outstanding) {
655 sx->outstanding = 2; /* expect two bytes */
656 sx->outp = socksreq; /* store it here */
659 presult = socks_state_recv(cf, sx, data, CURLPX_RECV_CONNECT,
663 else if(sx->outstanding) {
673 sxstate(sx, data, CONNECT_REQ_INIT);
678 sxstate(sx, data, CONNECT_AUTH_INIT);
683 sxstate(sx, data, CONNECT_GSSAPI_INIT);
719 if(sx->proxy_user && sx->proxy_password) {
720 proxy_user_len = strlen(sx->proxy_user);
721 proxy_password_len = strlen(sx->proxy_password);
738 if(sx->proxy_user && proxy_user_len) {
744 memcpy(socksreq + len, sx->proxy_user, proxy_user_len);
748 if(sx->proxy_password && proxy_password_len) {
754 memcpy(socksreq + len, sx->proxy_password, proxy_password_len);
757 sxstate(sx, data, CONNECT_AUTH_SEND);
758 DEBUGASSERT(len <= sizeof(sx->buffer));
759 sx->outstanding = len;
760 sx->outp = socksreq;
764 presult = socks_state_send(cf, sx, data, CURLPX_SEND_AUTH,
768 else if(sx->outstanding) {
772 sx->outp = socksreq;
773 sx->outstanding = 2;
774 sxstate(sx, data, CONNECT_AUTH_READ);
777 presult = socks_state_recv(cf, sx, data, CURLPX_RECV_AUTH,
781 else if(sx->outstanding) {
793 sxstate(sx, data, CONNECT_REQ_INIT);
798 enum resolve_t rc = Curl_resolv(data, sx->hostname, sx->remote_port,
805 sxstate(sx, data, CONNECT_RESOLVING);
808 sxstate(sx, data, CONNECT_RESOLVED);
815 dns = Curl_fetch_addr(data, sx->hostname, sx->remote_port);
822 infof(data, "SOCKS5: hostname '%s' found", sx->hostname);
852 sx->hostname);
873 sx->remote_port);
888 sx->remote_port);
915 if(1 != Curl_inet_pton(AF_INET6, sx->hostname, ip6))
923 if(1 == Curl_inet_pton(AF_INET, sx->hostname, ip4)) {
931 memcpy(&socksreq[len], sx->hostname, hostname_len); /* w/o NULL */
935 sx->hostname, sx->remote_port);
942 socksreq[len++] = (unsigned char)((sx->remote_port >> 8) & 0xff);
944 socksreq[len++] = (unsigned char)(sx->remote_port & 0xff);
952 sx->outp = socksreq;
953 DEBUGASSERT(len <= sizeof(sx->buffer));
954 sx->outstanding = len;
955 sxstate(sx, data, CONNECT_REQ_SENDING);
958 presult = socks_state_send(cf, sx, data, CURLPX_SEND_REQUEST,
962 else if(sx->outstanding) {
972 sx->outstanding = 10; /* minimum packet size is 10 */
973 sx->outp = socksreq;
974 sxstate(sx, data, CONNECT_REQ_READ);
977 presult = socks_state_recv(cf, sx, data, CURLPX_RECV_REQACK,
981 else if(sx->outstanding) {
994 sx->hostname, (unsigned char)socksreq[1]);
1053 DEBUGASSERT(len <= sizeof(sx->buffer));
1054 sx->outstanding = len - 10; /* get the rest */
1055 sx->outp = &socksreq[10];
1056 sxstate(sx, data, CONNECT_REQ_READ_MORE);
1059 sxstate(sx, data, CONNECT_DONE);
1067 presult = socks_state_recv(cf, sx, data, CURLPX_RECV_ADDRESS,
1071 else if(sx->outstanding) {
1075 sxstate(sx, data, CONNECT_DONE);
1136 struct socks_state *sx = cf->ctx;
1147 if(!sx) {
1148 sx = calloc(1, sizeof(*sx));
1149 if(!sx)
1151 cf->ctx = sx;
1154 if(sx->state == CONNECT_INIT) {
1158 sxstate(sx, data, CONNECT_SOCKS_INIT);
1159 sx->hostname =
1166 sx->remote_port =
1171 sx->proxy_user = conn->socks_proxy.user;
1172 sx->proxy_password = conn->socks_proxy.passwd;
1175 result = connect_SOCKS(cf, sx, data);
1176 if(!result && sx->state == CONNECT_DONE) {
1190 struct socks_state *sx = cf->ctx;
1192 if(!cf->connected && sx) {
1196 switch(sx->state) {