• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/curl/curl-7.36.0/lib/

Lines Matching defs:conn

94 static CURLcode smtp_regular_transfer(struct connectdata *conn, bool *done);
95 static CURLcode smtp_do(struct connectdata *conn, bool *done);
96 static CURLcode smtp_done(struct connectdata *conn, CURLcode status,
98 static CURLcode smtp_connect(struct connectdata *conn, bool *done);
99 static CURLcode smtp_disconnect(struct connectdata *conn, bool dead);
100 static CURLcode smtp_multi_statemach(struct connectdata *conn, bool *done);
101 static int smtp_getsock(struct connectdata *conn, curl_socket_t *socks,
103 static CURLcode smtp_doing(struct connectdata *conn, bool *dophase_done);
104 static CURLcode smtp_setup_connection(struct connectdata *conn);
105 static CURLcode smtp_parse_url_options(struct connectdata *conn);
106 static CURLcode smtp_parse_url_path(struct connectdata *conn);
107 static CURLcode smtp_parse_custom_request(struct connectdata *conn);
108 static CURLcode smtp_calc_sasl_details(struct connectdata *conn,
217 static void smtp_to_smtps(struct connectdata *conn)
219 conn->handler = &Curl_handler_smtps;
233 static bool smtp_endofresp(struct connectdata *conn, char *line, size_t len,
236 struct smtp_conn *smtpc = &conn->proto.smtpc;
300 static void state(struct connectdata *conn, smtpstate newstate)
302 struct smtp_conn *smtpc = &conn->proto.smtpc;
333 infof(conn->data, "SMTP %p state change from %s to %s\n",
347 static CURLcode smtp_perform_ehlo(struct connectdata *conn)
350 struct smtp_conn *smtpc = &conn->proto.smtpc;
361 state(conn, SMTP_EHLO);
372 static CURLcode smtp_perform_helo(struct connectdata *conn)
375 struct smtp_conn *smtpc = &conn->proto.smtpc;
384 state(conn, SMTP_HELO);
395 static CURLcode smtp_perform_starttls(struct connectdata *conn)
400 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "STARTTLS");
403 state(conn, SMTP_STARTTLS);
414 static CURLcode smtp_perform_upgrade_tls(struct connectdata *conn)
417 struct smtp_conn *smtpc = &conn->proto.smtpc;
420 result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &smtpc->ssldone);
424 state(conn, SMTP_UPGRADETLS);
427 smtp_to_smtps(conn);
428 result = smtp_perform_ehlo(conn);
442 static CURLcode smtp_perform_auth(struct connectdata *conn,
448 struct smtp_conn *smtpc = &conn->proto.smtpc;
455 state(conn, state2);
462 state(conn, state1);
475 static CURLcode smtp_perform_authentication(struct connectdata *conn)
486 if(!conn->bits.user_passwd) {
487 state(conn, SMTP_STOP);
493 result = smtp_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
499 result = smtp_perform_auth(conn, mech, initresp, len, state1, state2);
505 infof(conn->data, "No known authentication mechanisms supported!\n");
519 static CURLcode smtp_perform_command(struct connectdata *conn)
522 struct SessionHandle *data = conn->data;
527 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s %s",
532 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s",
537 state(conn, SMTP_COMMAND);
548 static CURLcode smtp_perform_mail(struct connectdata *conn)
554 struct SessionHandle *data = conn->data;
569 if(data->set.str[STRING_MAIL_AUTH] && conn->proto.smtpc.authused) {
584 if(conn->proto.smtpc.size_supported && conn->data->set.infilesize > 0) {
597 result = Curl_pp_sendf(&conn->proto.smtpc.pp,
600 result = Curl_pp_sendf(&conn->proto.smtpc.pp,
603 result = Curl_pp_sendf(&conn->proto.smtpc.pp,
606 result = Curl_pp_sendf(&conn->proto.smtpc.pp,
614 state(conn, SMTP_MAIL);
626 static CURLcode smtp_perform_rcpt_to(struct connectdata *conn)
629 struct SessionHandle *data = conn->data;
634 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "RCPT TO:%s",
637 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "RCPT TO:<%s>",
640 state(conn, SMTP_RCPT);
651 static CURLcode smtp_perform_quit(struct connectdata *conn)
656 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "QUIT");
659 state(conn, SMTP_QUIT);
665 static CURLcode smtp_state_servergreet_resp(struct connectdata *conn,
670 struct SessionHandle *data = conn->data;
679 result = smtp_perform_ehlo(conn);
685 static CURLcode smtp_state_starttls_resp(struct connectdata *conn,
690 struct SessionHandle *data = conn->data;
700 result = smtp_perform_authentication(conn);
703 result = smtp_perform_upgrade_tls(conn);
709 static CURLcode smtp_state_ehlo_resp(struct connectdata *conn, int smtpcode,
713 struct SessionHandle *data = conn->data;
714 struct smtp_conn *smtpc = &conn->proto.smtpc;
722 if((data->set.use_ssl <= CURLUSESSL_TRY || conn->ssl[FIRSTSOCKET].use) &&
723 !conn->bits.user_passwd)
724 result = smtp_perform_helo(conn);
790 if(data->set.use_ssl && !conn->ssl[FIRSTSOCKET].use) {
794 result = smtp_perform_starttls(conn);
797 result = smtp_perform_authentication(conn);
804 result = smtp_perform_authentication(conn);
812 static CURLcode smtp_state_helo_resp(struct connectdata *conn, int smtpcode,
816 struct SessionHandle *data = conn->data;
826 state(conn, SMTP_STOP);
832 static CURLcode smtp_state_auth_plain_resp(struct connectdata *conn,
837 struct SessionHandle *data = conn->data;
849 result = Curl_sasl_create_plain_message(conn->data, conn->user,
850 conn->passwd, &plainauth, &len);
853 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", plainauth);
856 state(conn, SMTP_AUTH_FINAL);
866 static CURLcode smtp_state_auth_login_resp(struct connectdata *conn,
871 struct SessionHandle *data = conn->data;
883 result = Curl_sasl_create_login_message(conn->data, conn->user,
887 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", authuser);
890 state(conn, SMTP_AUTH_LOGIN_PASSWD);
900 static CURLcode smtp_state_auth_login_password_resp(struct connectdata *conn,
905 struct SessionHandle *data = conn->data;
917 result = Curl_sasl_create_login_message(conn->data, conn->passwd,
921 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", authpasswd);
924 state(conn, SMTP_AUTH_FINAL);
935 static CURLcode smtp_state_auth_cram_resp(struct connectdata *conn,
940 struct SessionHandle *data = conn->data;
960 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
963 state(conn, SMTP_AUTH_CANCEL);
967 result = Curl_sasl_create_cram_md5_message(data, chlg, conn->user,
968 conn->passwd, &rplyb64, &len);
971 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", rplyb64);
974 state(conn, SMTP_AUTH_FINAL);
985 static CURLcode smtp_state_auth_digest_resp(struct connectdata *conn,
990 struct SessionHandle *data = conn->data;
1015 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
1018 state(conn, SMTP_AUTH_CANCEL);
1023 conn->user, conn->passwd,
1027 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", rplyb64);
1030 state(conn, SMTP_AUTH_DIGESTMD5_RESP);
1040 static CURLcode smtp_state_auth_digest_resp_resp(struct connectdata *conn,
1045 struct SessionHandle *data = conn->data;
1055 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "");
1058 state(conn, SMTP_AUTH_FINAL);
1068 static CURLcode smtp_state_auth_ntlm_resp(struct connectdata *conn,
1073 struct SessionHandle *data = conn->data;
1085 result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
1086 &conn->ntlm,
1090 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", type1msg);
1093 state(conn, SMTP_AUTH_NTLM_TYPE2MSG);
1103 static CURLcode smtp_state_auth_ntlm_type2msg_resp(struct connectdata *conn,
1108 struct SessionHandle *data = conn->data;
1124 result = Curl_sasl_decode_ntlm_type2_message(data, type2msg, &conn->ntlm);
1127 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
1130 state(conn, SMTP_AUTH_CANCEL);
1134 result = Curl_sasl_create_ntlm_type3_message(data, conn->user,
1135 conn->passwd, &conn->ntlm,
1139 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", type3msg);
1142 state(conn, SMTP_AUTH_FINAL);
1154 static CURLcode smtp_state_auth_xoauth2_resp(struct connectdata *conn,
1158 struct SessionHandle *data = conn->data;
1170 result = Curl_sasl_create_xoauth2_message(conn->data, conn->user,
1171 conn->xoauth2_bearer,
1175 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", xoauth);
1178 state(conn, SMTP_AUTH_FINAL);
1188 static CURLcode smtp_state_auth_cancel_resp(struct connectdata *conn,
1193 struct SessionHandle *data = conn->data;
1194 struct smtp_conn *smtpc = &conn->proto.smtpc;
1208 result = smtp_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
1215 result = smtp_perform_auth(conn, mech, initresp, len, state1, state2);
1230 static CURLcode smtp_state_auth_final_resp(struct connectdata *conn,
1235 struct SessionHandle *data = conn->data;
1245 state(conn, SMTP_STOP);
1251 static CURLcode smtp_state_command_resp(struct connectdata *conn, int smtpcode,
1255 struct SessionHandle *data = conn->data;
1271 result = Curl_client_write(conn, CLIENTWRITE_BODY, line, len + 1);
1281 result = smtp_perform_command(conn);
1285 state(conn, SMTP_STOP);
1289 state(conn, SMTP_STOP);
1297 static CURLcode smtp_state_mail_resp(struct connectdata *conn, int smtpcode,
1301 struct SessionHandle *data = conn->data;
1311 result = smtp_perform_rcpt_to(conn);
1317 static CURLcode smtp_state_rcpt_resp(struct connectdata *conn, int smtpcode,
1321 struct SessionHandle *data = conn->data;
1335 result = smtp_perform_rcpt_to(conn);
1338 result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "DATA");
1341 state(conn, SMTP_DATA);
1349 static CURLcode smtp_state_data_resp(struct connectdata *conn, int smtpcode,
1353 struct SessionHandle *data = conn->data;
1366 Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
1369 state(conn, SMTP_STOP);
1377 static CURLcode smtp_state_postdata_resp(struct connectdata *conn,
1389 state(conn, SMTP_STOP);
1394 static CURLcode smtp_statemach_act(struct connectdata *conn)
1397 curl_socket_t sock = conn->sock[FIRSTSOCKET];
1398 struct SessionHandle *data = conn->data;
1400 struct smtp_conn *smtpc = &conn->proto.smtpc;
1406 return smtp_perform_upgrade_tls(conn);
1428 result = smtp_state_servergreet_resp(conn, smtpcode, smtpc->state);
1432 result = smtp_state_ehlo_resp(conn, smtpcode, smtpc->state);
1436 result = smtp_state_helo_resp(conn, smtpcode, smtpc->state);
1440 result = smtp_state_starttls_resp(conn, smtpcode, smtpc->state);
1444 result = smtp_state_auth_plain_resp(conn, smtpcode, smtpc->state);
1448 result = smtp_state_auth_login_resp(conn, smtpcode, smtpc->state);
1452 result = smtp_state_auth_login_password_resp(conn, smtpcode,
1458 result = smtp_state_auth_cram_resp(conn, smtpcode, smtpc->state);
1462 result = smtp_state_auth_digest_resp(conn, smtpcode, smtpc->state);
1466 result = smtp_state_auth_digest_resp_resp(conn, smtpcode, smtpc->state);
1472 result = smtp_state_auth_ntlm_resp(conn, smtpcode, smtpc->state);
1476 result = smtp_state_auth_ntlm_type2msg_resp(conn, smtpcode,
1482 result = smtp_state_auth_xoauth2_resp(conn, smtpcode, smtpc->state);
1486 result = smtp_state_auth_cancel_resp(conn, smtpcode, smtpc->state);
1490 result = smtp_state_auth_final_resp(conn, smtpcode, smtpc->state);
1494 result = smtp_state_command_resp(conn, smtpcode, smtpc->state);
1498 result = smtp_state_mail_resp(conn, smtpcode, smtpc->state);
1502 result = smtp_state_rcpt_resp(conn, smtpcode, smtpc->state);
1506 result = smtp_state_data_resp(conn, smtpcode, smtpc->state);
1510 result = smtp_state_postdata_resp(conn, smtpcode, smtpc->state);
1517 state(conn, SMTP_STOP);
1526 static CURLcode smtp_multi_statemach(struct connectdata *conn, bool *done)
1529 struct smtp_conn *smtpc = &conn->proto.smtpc;
1531 if((conn->handler->flags & PROTOPT_SSL) && !smtpc->ssldone) {
1532 result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &smtpc->ssldone);
1543 static CURLcode smtp_block_statemach(struct connectdata *conn)
1546 struct smtp_conn *smtpc = &conn->proto.smtpc;
1556 static CURLcode smtp_init(struct connectdata *conn)
1559 struct SessionHandle *data = conn->data;
1570 static int smtp_getsock(struct connectdata *conn, curl_socket_t *socks,
1573 return Curl_pp_getsock(&conn->proto.smtpc.pp, socks, numsocks);
1586 static CURLcode smtp_connect(struct connectdata *conn, bool *done)
1589 struct smtp_conn *smtpc = &conn->proto.smtpc;
1595 conn->bits.close = FALSE;
1601 pp->conn = conn;
1610 result = smtp_parse_url_options(conn);
1615 result = smtp_parse_url_path(conn);
1620 state(conn, SMTP_SERVERGREET);
1622 result = smtp_multi_statemach(conn, done);
1636 static CURLcode smtp_done(struct connectdata *conn, CURLcode status,
1640 struct SessionHandle *data = conn->data;
1642 struct pingpong *pp = &conn->proto.smtpc.pp;
1657 conn->bits.close = TRUE; /* marked for closure */
1666 if(smtp->trailing_crlf || !conn->data->set.infilesize) {
1672 result = Curl_write(conn, conn->writesockfd, eob, len, &bytes_written);
1687 state(conn, SMTP_POSTDATA);
1696 result = smtp_block_statemach(conn);
1715 static CURLcode smtp_perform(struct connectdata *conn, bool *connected,
1720 struct SessionHandle *data = conn->data;
1723 DEBUGF(infof(conn->data, "DO phase starts\n"));
1738 result = smtp_perform_mail(conn);
1741 result = smtp_perform_command(conn);
1747 result = smtp_multi_statemach(conn, dophase_done);
1749 *connected = conn->bits.tcpconnect[FIRSTSOCKET];
1752 DEBUGF(infof(conn->data, "DO phase is complete\n"));
1766 static CURLcode smtp_do(struct connectdata *conn, bool *done)
1773 result = smtp_parse_custom_request(conn);
1777 result = smtp_regular_transfer(conn, done);
1789 static CURLcode smtp_disconnect(struct connectdata *conn, bool dead_connection)
1791 struct smtp_conn *smtpc = &conn->proto.smtpc;
1799 if(!dead_connection && smtpc->pp.conn && smtpc->pp.conn->bits.protoconnstart)
1800 if(!smtp_perform_quit(conn))
1801 (void)smtp_block_statemach(conn); /* ignore errors on QUIT */
1807 Curl_sasl_cleanup(conn, smtpc->authused);
1816 static CURLcode smtp_dophase_done(struct connectdata *conn, bool connected)
1818 struct SMTP *smtp = conn->data->req.protop;
1824 Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
1830 static CURLcode smtp_doing(struct connectdata *conn, bool *dophase_done)
1832 CURLcode result = smtp_multi_statemach(conn, dophase_done);
1835 DEBUGF(infof(conn->data, "DO phase failed\n"));
1837 result = smtp_dophase_done(conn, FALSE /* not connected */);
1839 DEBUGF(infof(conn->data, "DO phase is complete\n"));
1854 static CURLcode smtp_regular_transfer(struct connectdata *conn,
1859 struct SessionHandle *data = conn->data;
1871 result = smtp_perform(conn, &connected, dophase_done);
1875 result = smtp_dophase_done(conn, connected);
1880 static CURLcode smtp_setup_connection(struct connectdata *conn)
1882 struct SessionHandle *data = conn->data;
1885 if(conn->bits.httpproxy && !data->set.tunnel_thru_httpproxy) {
1889 if(conn->handler == &Curl_handler_smtp)
1890 conn->handler = &Curl_handler_smtp_proxy;
1893 conn->handler = &Curl_handler_smtps_proxy;
1900 return conn->handler->setup_connection(conn);
1909 result = smtp_init(conn);
1924 static CURLcode smtp_parse_url_options(struct connectdata *conn)
1927 struct smtp_conn *smtpc = &conn->proto.smtpc;
1928 const char *options = conn->options;
1985 static CURLcode smtp_parse_url_path(struct connectdata *conn)
1988 struct SessionHandle *data = conn->data;
1989 struct smtp_conn *smtpc = &conn->proto.smtpc;
2002 return Curl_urldecode(conn->data, path, 0, &smtpc->domain, NULL, TRUE);
2011 static CURLcode smtp_parse_custom_request(struct connectdata *conn)
2014 struct SessionHandle *data = conn->data;
2031 static CURLcode smtp_calc_sasl_details(struct connectdata *conn,
2037 struct SessionHandle *data = conn->data;
2038 struct smtp_conn *smtpc = &conn->proto.smtpc;
2066 result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
2067 &conn->ntlm,
2074 (smtpc->prefmech != SASL_AUTH_ANY)) || conn->xoauth2_bearer) {
2081 result = Curl_sasl_create_xoauth2_message(data, conn->user,
2082 conn->xoauth2_bearer,
2093 result = Curl_sasl_create_login_message(data, conn->user, initresp, len);
2103 result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
2110 CURLcode Curl_smtp_escape_eob(struct connectdata *conn, ssize_t nread)
2120 struct SessionHandle *data = conn->data;