• 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

92 static CURLcode imap_regular_transfer(struct connectdata *conn, bool *done);
93 static CURLcode imap_do(struct connectdata *conn, bool *done);
94 static CURLcode imap_done(struct connectdata *conn, CURLcode status,
96 static CURLcode imap_connect(struct connectdata *conn, bool *done);
97 static CURLcode imap_disconnect(struct connectdata *conn, bool dead);
98 static CURLcode imap_multi_statemach(struct connectdata *conn, bool *done);
99 static int imap_getsock(struct connectdata *conn, curl_socket_t *socks,
101 static CURLcode imap_doing(struct connectdata *conn, bool *dophase_done);
102 static CURLcode imap_setup_connection(struct connectdata *conn);
104 static CURLcode imap_sendf(struct connectdata *conn, const char *fmt, ...);
105 static CURLcode imap_parse_url_options(struct connectdata *conn);
106 static CURLcode imap_parse_url_path(struct connectdata *conn);
107 static CURLcode imap_parse_custom_request(struct connectdata *conn);
108 static CURLcode imap_calc_sasl_details(struct connectdata *conn,
218 static void imap_to_imaps(struct connectdata *conn)
220 conn->handler = &Curl_handler_imaps;
274 static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
277 struct IMAP *imap = conn->data->req.protop;
278 struct imap_conn *imapc = &conn->proto.imapc;
294 failf(conn->data, "Bad tagged response");
367 failf(conn->data, "Unexpected continuation response");
413 static void state(struct connectdata *conn, imapstate newstate)
415 struct imap_conn *imapc = &conn->proto.imapc;
447 infof(conn->data, "IMAP %p state change from %s to %s\n",
461 static CURLcode imap_perform_capability(struct connectdata *conn)
464 struct imap_conn *imapc = &conn->proto.imapc;
471 result = imap_sendf(conn, "CAPABILITY");
474 state(conn, IMAP_CAPABILITY);
485 static CURLcode imap_perform_starttls(struct connectdata *conn)
490 result = imap_sendf(conn, "STARTTLS");
493 state(conn, IMAP_STARTTLS);
504 static CURLcode imap_perform_upgrade_tls(struct connectdata *conn)
507 struct imap_conn *imapc = &conn->proto.imapc;
510 result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &imapc->ssldone);
514 state(conn, IMAP_UPGRADETLS);
517 imap_to_imaps(conn);
518 result = imap_perform_capability(conn);
531 static CURLcode imap_perform_login(struct connectdata *conn)
539 if(!conn->bits.user_passwd) {
540 state(conn, IMAP_STOP);
546 user = imap_atom(conn->user);
547 passwd = imap_atom(conn->passwd);
550 result = imap_sendf(conn, "LOGIN %s %s", user ? user : "",
557 state(conn, IMAP_LOGIN);
569 static CURLcode imap_perform_authenticate(struct connectdata *conn,
578 result = imap_sendf(conn, "AUTHENTICATE %s %s", mech, initresp);
581 state(conn, state2);
585 result = imap_sendf(conn, "AUTHENTICATE %s", mech);
588 state(conn, state1);
602 static CURLcode imap_perform_authentication(struct connectdata *conn)
605 struct imap_conn *imapc = &conn->proto.imapc;
614 if(!conn->bits.user_passwd) {
615 state(conn, IMAP_STOP);
621 result = imap_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
627 result = imap_perform_authenticate(conn, mech, initresp, state1, state2);
634 result = imap_perform_login(conn);
637 infof(conn->data, "No known authentication mechanisms supported!\n");
651 static CURLcode imap_perform_list(struct connectdata *conn)
654 struct SessionHandle *data = conn->data;
660 result = imap_sendf(conn, "%s%s", imap->custom,
669 result = imap_sendf(conn, "LIST \"%s\" *", mailbox);
675 state(conn, IMAP_LIST);
686 static CURLcode imap_perform_select(struct connectdata *conn)
689 struct SessionHandle *data = conn->data;
691 struct imap_conn *imapc = &conn->proto.imapc;
700 failf(conn->data, "Cannot SELECT without a mailbox.");
710 result = imap_sendf(conn, "SELECT %s", mailbox);
715 state(conn, IMAP_SELECT);
726 static CURLcode imap_perform_fetch(struct connectdata *conn)
729 struct IMAP *imap = conn->data->req.protop;
733 failf(conn->data, "Cannot FETCH without a UID.");
738 result = imap_sendf(conn, "FETCH %s BODY[%s]",
743 state(conn, IMAP_FETCH);
754 static CURLcode imap_perform_append(struct connectdata *conn)
757 struct IMAP *imap = conn->data->req.protop;
762 failf(conn->data, "Cannot APPEND without a mailbox.");
767 if(conn->data->set.infilesize < 0) {
768 failf(conn->data, "Cannot APPEND with unknown input file size\n");
778 result = imap_sendf(conn, "APPEND %s (\\Seen) {%" CURL_FORMAT_CURL_OFF_T "}",
779 mailbox, conn->data->set.infilesize);
784 state(conn, IMAP_APPEND);
795 static CURLcode imap_perform_logout(struct connectdata *conn)
800 result = imap_sendf(conn, "LOGOUT");
803 state(conn, IMAP_LOGOUT);
809 static CURLcode imap_state_servergreet_resp(struct connectdata *conn,
814 struct SessionHandle *data = conn->data;
823 result = imap_perform_capability(conn);
829 static CURLcode imap_state_capability_resp(struct connectdata *conn,
834 struct SessionHandle *data = conn->data;
835 struct imap_conn *imapc = &conn->proto.imapc;
903 if(data->set.use_ssl && !conn->ssl[FIRSTSOCKET].use) {
907 result = imap_perform_starttls(conn);
910 result = imap_perform_authentication(conn);
917 result = imap_perform_authentication(conn);
920 result = imap_perform_authentication(conn);
926 static CURLcode imap_state_starttls_resp(struct connectdata *conn,
931 struct SessionHandle *data = conn->data;
941 result = imap_perform_authentication(conn);
944 result = imap_perform_upgrade_tls(conn);
950 static CURLcode imap_state_auth_plain_resp(struct connectdata *conn,
955 struct SessionHandle *data = conn->data;
967 result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
971 result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", plainauth);
974 state(conn, IMAP_AUTHENTICATE_FINAL);
984 static CURLcode imap_state_auth_login_resp(struct connectdata *conn,
989 struct SessionHandle *data = conn->data;
1001 result = Curl_sasl_create_login_message(data, conn->user,
1005 result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", authuser);
1008 state(conn, IMAP_AUTHENTICATE_LOGIN_PASSWD);
1018 static CURLcode imap_state_auth_login_password_resp(struct connectdata *conn,
1023 struct SessionHandle *data = conn->data;
1035 result = Curl_sasl_create_login_message(data, conn->passwd,
1039 result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", authpasswd);
1042 state(conn, IMAP_AUTHENTICATE_FINAL);
1053 static CURLcode imap_state_auth_cram_resp(struct connectdata *conn,
1058 struct SessionHandle *data = conn->data;
1078 result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
1081 state(conn, IMAP_AUTHENTICATE_CANCEL);
1085 result = Curl_sasl_create_cram_md5_message(data, chlg, conn->user,
1086 conn->passwd, &rplyb64, &len);
1089 result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", rplyb64);
1092 state(conn, IMAP_AUTHENTICATE_FINAL);
1103 static CURLcode imap_state_auth_digest_resp(struct connectdata *conn,
1108 struct SessionHandle *data = conn->data;
1133 result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
1136 state(conn, IMAP_AUTHENTICATE_CANCEL);
1141 conn->user, conn->passwd,
1145 result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", rplyb64);
1148 state(conn, IMAP_AUTHENTICATE_DIGESTMD5_RESP);
1158 static CURLcode imap_state_auth_digest_resp_resp(struct connectdata *conn,
1163 struct SessionHandle *data = conn->data;
1173 result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "");
1176 state(conn, IMAP_AUTHENTICATE_FINAL);
1185 static CURLcode imap_state_auth_ntlm_resp(struct connectdata *conn,
1190 struct SessionHandle *data = conn->data;
1202 result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
1203 &conn->ntlm,
1207 result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", type1msg);
1210 state(conn, IMAP_AUTHENTICATE_NTLM_TYPE2MSG);
1220 static CURLcode imap_state_auth_ntlm_type2msg_resp(struct connectdata *conn,
1225 struct SessionHandle *data = conn->data;
1241 result = Curl_sasl_decode_ntlm_type2_message(data, type2msg, &conn->ntlm);
1244 result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
1247 state(conn, IMAP_AUTHENTICATE_CANCEL);
1251 result = Curl_sasl_create_ntlm_type3_message(data, conn->user,
1252 conn->passwd, &conn->ntlm,
1256 result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", type3msg);
1259 state(conn, IMAP_AUTHENTICATE_FINAL);
1271 static CURLcode imap_state_auth_xoauth2_resp(struct connectdata *conn,
1276 struct SessionHandle *data = conn->data;
1288 result = Curl_sasl_create_xoauth2_message(conn->data, conn->user,
1289 conn->xoauth2_bearer,
1293 result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", xoauth);
1296 state(conn, IMAP_AUTHENTICATE_FINAL);
1306 static CURLcode imap_state_auth_cancel_resp(struct connectdata *conn,
1311 struct SessionHandle *data = conn->data;
1312 struct imap_conn *imapc = &conn->proto.imapc;
1326 result = imap_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
1333 result = imap_perform_authenticate(conn, mech, initresp, state1, state2);
1340 result = imap_perform_login(conn);
1352 static CURLcode imap_state_auth_final_resp(struct connectdata *conn,
1357 struct SessionHandle *data = conn->data;
1367 state(conn, IMAP_STOP);
1373 static CURLcode imap_state_login_resp(struct connectdata *conn,
1378 struct SessionHandle *data = conn->data;
1388 state(conn, IMAP_STOP);
1394 static CURLcode imap_state_list_resp(struct connectdata *conn, int imapcode,
1398 char *line = conn->data->state.buffer;
1406 result = Curl_client_write(conn, CLIENTWRITE_BODY, line, len + 1);
1413 state(conn, IMAP_STOP);
1419 static CURLcode imap_state_select_resp(struct connectdata *conn, int imapcode,
1423 struct SessionHandle *data = conn->data;
1424 struct IMAP *imap = conn->data->req.protop;
1425 struct imap_conn *imapc = &conn->proto.imapc;
1442 failf(conn->data, "Mailbox UIDVALIDITY has changed");
1450 result = imap_perform_list(conn);
1452 result = imap_perform_fetch(conn);
1464 static CURLcode imap_state_fetch_resp(struct connectdata *conn, int imapcode,
1468 struct SessionHandle *data = conn->data;
1469 struct imap_conn *imapc = &conn->proto.imapc;
1479 state(conn, IMAP_STOP);
1511 result = Curl_client_write(conn, CLIENTWRITE_BODY, pp->cache, chunk);
1539 Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
1543 Curl_setup_transfer(conn, FIRSTSOCKET, size, FALSE, NULL, -1, NULL);
1548 failf(pp->conn->data, "Failed to parse FETCH response.");
1553 state(conn, IMAP_STOP);
1559 static CURLcode imap_state_fetch_final_resp(struct connectdata *conn,
1571 state(conn, IMAP_STOP);
1577 static CURLcode imap_state_append_resp(struct connectdata *conn, int imapcode,
1581 struct SessionHandle *data = conn->data;
1593 Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
1596 state(conn, IMAP_STOP);
1603 static CURLcode imap_state_append_final_resp(struct connectdata *conn,
1615 state(conn, IMAP_STOP);
1620 static CURLcode imap_statemach_act(struct connectdata *conn)
1623 curl_socket_t sock = conn->sock[FIRSTSOCKET];
1625 struct imap_conn *imapc = &conn->proto.imapc;
1631 return imap_perform_upgrade_tls(conn);
1653 result = imap_state_servergreet_resp(conn, imapcode, imapc->state);
1657 result = imap_state_capability_resp(conn, imapcode, imapc->state);
1661 result = imap_state_starttls_resp(conn, imapcode, imapc->state);
1665 result = imap_state_auth_plain_resp(conn, imapcode, imapc->state);
1669 result = imap_state_auth_login_resp(conn, imapcode, imapc->state);
1673 result = imap_state_auth_login_password_resp(conn, imapcode,
1679 result = imap_state_auth_cram_resp(conn, imapcode, imapc->state);
1683 result = imap_state_auth_digest_resp(conn, imapcode, imapc->state);
1687 result = imap_state_auth_digest_resp_resp(conn, imapcode, imapc->state);
1693 result = imap_state_auth_ntlm_resp(conn, imapcode, imapc->state);
1697 result = imap_state_auth_ntlm_type2msg_resp(conn, imapcode,
1703 result = imap_state_auth_xoauth2_resp(conn, imapcode, imapc->state);
1707 result = imap_state_auth_cancel_resp(conn, imapcode, imapc->state);
1711 result = imap_state_auth_final_resp(conn, imapcode, imapc->state);
1715 result = imap_state_login_resp(conn, imapcode, imapc->state);
1719 result = imap_state_list_resp(conn, imapcode, imapc->state);
1723 result = imap_state_select_resp(conn, imapcode, imapc->state);
1727 result = imap_state_fetch_resp(conn, imapcode, imapc->state);
1731 result = imap_state_fetch_final_resp(conn, imapcode, imapc->state);
1735 result = imap_state_append_resp(conn, imapcode, imapc->state);
1739 result = imap_state_append_final_resp(conn, imapcode, imapc->state);
1746 state(conn, IMAP_STOP);
1755 static CURLcode imap_multi_statemach(struct connectdata *conn, bool *done)
1758 struct imap_conn *imapc = &conn->proto.imapc;
1760 if((conn->handler->flags & PROTOPT_SSL) && !imapc->ssldone) {
1761 result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &imapc->ssldone);
1772 static CURLcode imap_block_statemach(struct connectdata *conn)
1775 struct imap_conn *imapc = &conn->proto.imapc;
1785 static CURLcode imap_init(struct connectdata *conn)
1788 struct SessionHandle *data = conn->data;
1799 static int imap_getsock(struct connectdata *conn, curl_socket_t *socks,
1802 return Curl_pp_getsock(&conn->proto.imapc.pp, socks, numsocks);
1815 static CURLcode imap_connect(struct connectdata *conn, bool *done)
1818 struct imap_conn *imapc = &conn->proto.imapc;
1824 conn->bits.close = FALSE;
1830 pp->conn = conn;
1840 result = imap_parse_url_options(conn);
1845 state(conn, IMAP_SERVERGREET);
1850 result = imap_multi_statemach(conn, done);
1864 static CURLcode imap_done(struct connectdata *conn, CURLcode status,
1868 struct SessionHandle *data = conn->data;
1881 conn->bits.close = TRUE; /* marked for closure */
1888 state(conn, IMAP_FETCH_FINAL);
1891 result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "");
1893 state(conn, IMAP_APPEND_FINAL);
1904 result = imap_block_statemach(conn);
1928 static CURLcode imap_perform(struct connectdata *conn, bool *connected,
1933 struct SessionHandle *data = conn->data;
1935 struct imap_conn *imapc = &conn->proto.imapc;
1938 DEBUGF(infof(conn->data, "DO phase starts\n"));
1940 if(conn->data->set.opt_no_body) {
1956 if(conn->data->set.upload)
1958 result = imap_perform_append(conn);
1961 result = imap_perform_list(conn);
1964 result = imap_perform_fetch(conn);
1967 result = imap_perform_select(conn);
1970 result = imap_perform_list(conn);
1976 result = imap_multi_statemach(conn, dophase_done);
1978 *connected = conn->bits.tcpconnect[FIRSTSOCKET];
1981 DEBUGF(infof(conn->data, "DO phase is complete\n"));
1995 static CURLcode imap_do(struct connectdata *conn, bool *done)
2002 result = imap_parse_url_path(conn);
2007 result = imap_parse_custom_request(conn);
2011 result = imap_regular_transfer(conn, done);
2023 static CURLcode imap_disconnect(struct connectdata *conn, bool dead_connection)
2025 struct imap_conn *imapc = &conn->proto.imapc;
2033 if(!dead_connection && imapc->pp.conn && imapc->pp.conn->bits.protoconnstart)
2034 if(!imap_perform_logout(conn))
2035 (void)imap_block_statemach(conn); /* ignore errors on LOGOUT */
2041 Curl_sasl_cleanup(conn, imapc->authused);
2051 static CURLcode imap_dophase_done(struct connectdata *conn, bool connected)
2053 struct IMAP *imap = conn->data->req.protop;
2059 Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
2065 static CURLcode imap_doing(struct connectdata *conn, bool *dophase_done)
2067 CURLcode result = imap_multi_statemach(conn, dophase_done);
2070 DEBUGF(infof(conn->data, "DO phase failed\n"));
2072 result = imap_dophase_done(conn, FALSE /* not connected */);
2074 DEBUGF(infof(conn->data, "DO phase is complete\n"));
2089 static CURLcode imap_regular_transfer(struct connectdata *conn,
2094 struct SessionHandle *data = conn->data;
2106 result = imap_perform(conn, &connected, dophase_done);
2110 result = imap_dophase_done(conn, connected);
2115 static CURLcode imap_setup_connection(struct connectdata *conn)
2117 struct SessionHandle *data = conn->data;
2120 CURLcode result = imap_init(conn);
2124 if(conn->bits.httpproxy && !data->set.tunnel_thru_httpproxy) {
2128 if(conn->handler == &Curl_handler_imap)
2129 conn->handler = &Curl_handler_imap_proxy;
2132 conn->handler = &Curl_handler_imaps_proxy;
2140 return conn->handler->setup_connection(conn);
2160 static CURLcode imap_sendf(struct connectdata *conn, const char *fmt, ...)
2163 struct imap_conn *imapc = &conn->proto.imapc;
2174 'A' + curlx_sltosi(conn->connection_id % 26), imapc->cmdid);
2311 static CURLcode imap_parse_url_options(struct connectdata *conn)
2314 struct imap_conn *imapc = &conn->proto.imapc;
2315 const char *options = conn->options;
2390 static CURLcode imap_parse_url_path(struct connectdata *conn)
2394 struct SessionHandle *data = conn->data;
2448 DEBUGF(infof(conn->data, "IMAP URL parameter '%s' = '%s'\n", name, value));
2499 static CURLcode imap_parse_custom_request(struct connectdata *conn)
2502 struct SessionHandle *data = conn->data;
2536 static CURLcode imap_calc_sasl_details(struct connectdata *conn,
2542 struct SessionHandle *data = conn->data;
2543 struct imap_conn *imapc = &conn->proto.imapc;
2571 result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
2572 &conn->ntlm,
2579 (imapc->prefmech != SASL_AUTH_ANY)) || conn->xoauth2_bearer) {
2586 result = Curl_sasl_create_xoauth2_message(data, conn->user,
2587 conn->xoauth2_bearer,
2598 result = Curl_sasl_create_login_message(data, conn->user, initresp, len);
2608 result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,