|
@@ -15609,6 +15609,58 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
|
|
return bio;
|
|
|
}
|
|
|
|
|
|
+ WOLFSSL_BIO *wolfSSL_BIO_new_connect(const char *str)
|
|
|
+ {
|
|
|
+ WOLFSSL_BIO *bio;
|
|
|
+ WOLFSSL_ENTER("wolfSSL_BIO_new_connect");
|
|
|
+ bio = wolfSSL_BIO_new(wolfSSL_BIO_s_socket());
|
|
|
+ if (bio) {
|
|
|
+ bio->ip = str;
|
|
|
+ bio->type = WOLFSSL_BIO_SOCKET;
|
|
|
+ }
|
|
|
+ return bio;
|
|
|
+ }
|
|
|
+
|
|
|
+ long wolfSSL_BIO_set_conn_port(WOLFSSL_BIO *b, char* port)
|
|
|
+ {
|
|
|
+ int p;
|
|
|
+ WOLFSSL_ENTER("wolfSSL_BIO_set_conn_port");
|
|
|
+
|
|
|
+ if (!b || !port) {
|
|
|
+ WOLFSSL_ENTER("Bad parameter");
|
|
|
+ return WOLFSSL_FAILURE;
|
|
|
+ }
|
|
|
+
|
|
|
+ p = XATOI(port);
|
|
|
+ if (!p || p < 0) {
|
|
|
+ WOLFSSL_ENTER("Port parsing error");
|
|
|
+ return WOLFSSL_FAILURE;
|
|
|
+ }
|
|
|
+
|
|
|
+ b->port = (word16)p;
|
|
|
+ return WOLFSSL_SUCCESS;
|
|
|
+ }
|
|
|
+
|
|
|
+ long wolfSSL_BIO_do_connect(WOLFSSL_BIO *b)
|
|
|
+ {
|
|
|
+ SOCKET_T sfd = SOCKET_INVALID;
|
|
|
+ WOLFSSL_ENTER("wolfSSL_BIO_do_connect");
|
|
|
+
|
|
|
+ if (!b) {
|
|
|
+ WOLFSSL_ENTER("Bad parameter");
|
|
|
+ return WOLFSSL_FAILURE;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (wolfIO_TcpConnect(&sfd, b->ip, b->port, 0) < 0 ) {
|
|
|
+ WOLFSSL_ENTER("wolfIO_TcpConnect error");
|
|
|
+ return WOLFSSL_FAILURE;
|
|
|
+ }
|
|
|
+
|
|
|
+ b->num = sfd;
|
|
|
+ b->shutdown = BIO_CLOSE;
|
|
|
+ return WOLFSSL_SUCCESS;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
int wolfSSL_BIO_eof(WOLFSSL_BIO* b)
|
|
|
{
|