Lines Matching refs:conn

283 	conn_t *conn;  in fetch_reopen()  local
288 if ((conn = calloc(1, sizeof(*conn))) == NULL) in fetch_reopen()
297 conn->sd = sd; in fetch_reopen()
298 ++conn->ref; in fetch_reopen()
299 return (conn); in fetch_reopen()
401 fetch_socks5_init(conn_t *conn, const char *host, int port, int verbose) in fetch_socks5_init() argument
420 if (fetch_write(conn, buf, 3) != 3) { in fetch_socks5_init()
426 if (fetch_read(conn, buf, 2) != 2) { in fetch_socks5_init()
463 if (fetch_write(conn, buf, ptr - buf) != ptr - buf) { in fetch_socks5_init()
469 if (!fetch_read(conn, buf, BUFF_SIZE)) { in fetch_socks5_init()
589 conn_t *conn = NULL; in fetch_connect() local
724 if ((conn = fetch_reopen(sd)) == NULL) in fetch_connect()
728 if (!fetch_socks5_init(conn, host, port, verbose)) in fetch_connect()
736 return (conn); in fetch_connect()
743 if (conn != NULL) in fetch_connect()
744 fetch_close(conn); in fetch_connect()
1217 fetch_ssl(conn_t *conn, const struct url *URL, int verbose) in fetch_ssl() argument
1224 if ((conn->ssl_ctx = SSL_CTX_new(TLS_client_method())) == NULL) { in fetch_ssl()
1229 SSL_CTX_set_mode(conn->ssl_ctx, SSL_MODE_AUTO_RETRY); in fetch_ssl()
1231 fetch_ssl_setup_transport_layer(conn->ssl_ctx, verbose); in fetch_ssl()
1232 if (!fetch_ssl_setup_peer_verification(conn->ssl_ctx, verbose)) in fetch_ssl()
1234 if (!fetch_ssl_setup_client_certificate(conn->ssl_ctx, verbose)) in fetch_ssl()
1237 conn->ssl = SSL_new(conn->ssl_ctx); in fetch_ssl()
1238 if (conn->ssl == NULL) { in fetch_ssl()
1243 SSL_set_fd(conn->ssl, conn->sd); in fetch_ssl()
1246 if (!SSL_set_tlsext_host_name(conn->ssl, __DECONST(char *, URL->host))) { in fetch_ssl()
1252 while ((ret = SSL_connect(conn->ssl)) == -1) { in fetch_ssl()
1253 ssl_err = SSL_get_error(conn->ssl, ret); in fetch_ssl()
1260 conn->ssl_cert = SSL_get_peer_certificate(conn->ssl); in fetch_ssl()
1262 if (conn->ssl_cert == NULL) { in fetch_ssl()
1269 if (!fetch_ssl_verify_hname(conn->ssl_cert, URL->host)) { in fetch_ssl()
1278 SSL_get_version(conn->ssl), SSL_get_cipher(conn->ssl)); in fetch_ssl()
1279 name = X509_get_subject_name(conn->ssl_cert); in fetch_ssl()
1283 name = X509_get_issuer_name(conn->ssl_cert); in fetch_ssl()
1291 (void)conn; in fetch_ssl()
1355 fetch_read(conn_t *conn, void *buf, size_t len) in fetch_read() argument
1368 pfd.fd = conn->sd; in fetch_read()
1393 if (conn->ssl != NULL) in fetch_read()
1394 rlen = fetch_ssl_read(conn->ssl, buf, len); in fetch_read()
1397 rlen = read(conn->sd, buf, len); in fetch_read()
1450 fetch_getln(conn_t *conn) in fetch_getln() argument
1457 if (conn->buf == NULL) { in fetch_getln()
1458 if ((conn->buf = malloc(MIN_BUF_SIZE)) == NULL) in fetch_getln()
1460 conn->line = conn->buf; in fetch_getln()
1461 conn->bufsize = MIN_BUF_SIZE; in fetch_getln()
1462 conn->buflen = 0; in fetch_getln()
1463 conn->pos = 0; in fetch_getln()
1467 if (conn->pos < conn->buflen) { in fetch_getln()
1468 conn->line = conn->buf + conn->pos; in fetch_getln()
1469 while (conn->pos < conn->buflen) in fetch_getln()
1470 if (conn->buf[conn->pos++] == '\n') in fetch_getln()
1473 conn->pos = conn->line - conn->buf; in fetch_getln()
1477 if (conn->buflen > 0) { in fetch_getln()
1478 if (conn->pos < conn->buflen) { in fetch_getln()
1479 memmove(conn->buf, conn->buf + conn->pos, in fetch_getln()
1480 conn->buflen - conn->pos); in fetch_getln()
1482 conn->buflen -= conn->pos; in fetch_getln()
1483 conn->pos -= conn->pos; in fetch_getln()
1484 conn->line = conn->buf; in fetch_getln()
1489 rlen = fetch_read(conn, conn->buf + conn->buflen, in fetch_getln()
1490 conn->bufsize - conn->buflen - 1); in fetch_getln()
1495 conn->buflen += rlen; in fetch_getln()
1496 conn->buf[conn->buflen] = '\0'; in fetch_getln()
1501 while (conn->pos < conn->buflen) in fetch_getln()
1502 if (conn->buf[conn->pos++] == '\n') in fetch_getln()
1505 if (conn->buflen > conn->bufsize / 2) { in fetch_getln()
1506 tmp = conn->buf; in fetch_getln()
1507 tmpsize = conn->bufsize * 2; in fetch_getln()
1510 conn->line = conn->buf = tmp; in fetch_getln()
1511 conn->bufsize = tmpsize; in fetch_getln()
1515 conn->pos = conn->buflen; in fetch_getln()
1517 conn->linelen = (conn->buf + conn->pos) - conn->line; in fetch_getln()
1518 if (conn->linelen > 0 && conn->line[conn->linelen - 1] == '\n') in fetch_getln()
1519 conn->line[--conn->linelen] = '\0'; in fetch_getln()
1520 if (conn->linelen > 0 && conn->line[conn->linelen - 1] == '\r') in fetch_getln()
1521 conn->line[--conn->linelen] = '\0'; in fetch_getln()
1522 DEBUGF("<<< %.*s\n", (int)conn->linelen, conn->line); in fetch_getln()
1523 return (conn->linelen); in fetch_getln()
1525 conn->line = NULL; in fetch_getln()
1526 conn->linelen = 0; in fetch_getln()
1535 fetch_bufread(conn_t *conn, void *buf, size_t len) in fetch_bufread() argument
1544 if (conn->buf == NULL) { in fetch_bufread()
1545 conn->bufsize = MIN_BUF_SIZE; in fetch_bufread()
1546 while (conn->bufsize < len) in fetch_bufread()
1547 conn->bufsize *= 2; in fetch_bufread()
1548 if ((conn->buf = malloc(conn->bufsize)) == NULL) in fetch_bufread()
1550 conn->buflen = 0; in fetch_bufread()
1551 conn->pos = 0; in fetch_bufread()
1553 conn->line = NULL; in fetch_bufread()
1554 conn->linelen = 0; in fetch_bufread()
1557 if (conn->buflen > conn->pos) { in fetch_bufread()
1558 if (len > conn->buflen - conn->pos) in fetch_bufread()
1559 rlen = conn->buflen - conn->pos; in fetch_bufread()
1562 memcpy(buf, conn->buf + conn->pos, rlen); in fetch_bufread()
1563 conn->pos += rlen; in fetch_bufread()
1567 return (fetch_read(conn, buf, len)); in fetch_bufread()
1575 fetch_write(conn_t *conn, const void *buf, size_t len) in fetch_write() argument
1581 return (fetch_writev(conn, &iov, 1)); in fetch_write()
1589 fetch_writev(conn_t *conn, struct iovec *iov, int iovcnt) in fetch_writev() argument
1602 pfd.fd = conn->sd; in fetch_writev()
1620 if (conn->ssl != NULL) { in fetch_writev()
1621 wlen = fetch_ssl_write(conn->ssl, in fetch_writev()
1625 wlen = writev(conn->sd, iov, iovcnt); in fetch_writev()
1685 fetch_putln(conn_t *conn, const char *str, size_t len) in fetch_putln() argument
1696 ret = fetch_writev(conn, &iov[1], 1); in fetch_putln()
1698 ret = fetch_writev(conn, iov, 2); in fetch_putln()
1709 fetch_close(conn_t *conn) in fetch_close() argument
1713 if (--conn->ref > 0) in fetch_close()
1716 if (conn->ssl) { in fetch_close()
1717 SSL_shutdown(conn->ssl); in fetch_close()
1718 SSL_set_connect_state(conn->ssl); in fetch_close()
1719 SSL_free(conn->ssl); in fetch_close()
1720 conn->ssl = NULL; in fetch_close()
1722 if (conn->ssl_ctx) { in fetch_close()
1723 SSL_CTX_free(conn->ssl_ctx); in fetch_close()
1724 conn->ssl_ctx = NULL; in fetch_close()
1726 if (conn->ssl_cert) { in fetch_close()
1727 X509_free(conn->ssl_cert); in fetch_close()
1728 conn->ssl_cert = NULL; in fetch_close()
1731 ret = close(conn->sd); in fetch_close()
1732 free(conn->buf); in fetch_close()
1733 free(conn); in fetch_close()