New function to get BIO method.
FossilOrigin-Name: c1bd435aaa298fa22bb42cc955e1e46d409eeb4a30e96b4ccb01fd112b16fca6
This commit is contained in:
parent
81c64922ca
commit
5008b12d8e
@ -5,6 +5,25 @@
|
||||
#include "conn.h"
|
||||
#include "cw_log.h"
|
||||
|
||||
|
||||
BIO_METHOD *dtls_openssl_bio_method()
|
||||
{
|
||||
static BIO_METHOD bio_methods;
|
||||
|
||||
bio_methods.type = BIO_TYPE_DGRAM;
|
||||
bio_methods.name = "CW packet";
|
||||
bio_methods.bwrite = dtls_openssl_bio_write;
|
||||
bio_methods.bread = dtls_openssl_bio_read;
|
||||
bio_methods.bputs = dtls_openssl_bio_puts;
|
||||
bio_methods.bgets = 0;
|
||||
bio_methods.ctrl = dtls_openssl_bio_ctrl;
|
||||
bio_methods.create = dtls_openssl_bio_new;
|
||||
bio_methods.destroy = dtls_openssl_bio_free;
|
||||
bio_methods.callback_ctrl = 0;
|
||||
|
||||
return &bio_methods;
|
||||
}
|
||||
|
||||
int dtls_openssl_bio_write(BIO * b, const char *data, int len)
|
||||
{
|
||||
|
||||
@ -14,6 +33,7 @@ int dtls_openssl_bio_write(BIO *b, const char *data, int len)
|
||||
memcpy(buffer + 4, data, len);
|
||||
int rc = conn->send_packet(conn, buffer, len + 4);
|
||||
|
||||
|
||||
cw_dbg(DBG_DTLS_BIO, "SSL BIO write: %d bytes, rc=%d, ptr: %p", len, rc, data);
|
||||
|
||||
if (rc < 0)
|
||||
@ -24,6 +44,8 @@ int dtls_openssl_bio_write(BIO *b, const char *data, int len)
|
||||
|
||||
int dtls_openssl_bio_read(BIO * b, char *out, int maxlen)
|
||||
{
|
||||
cw_dbg(DBG_DTLS_BIO, "SSL BIO read: (maxlen = %d)", maxlen);
|
||||
|
||||
struct conn *conn = b->ptr;
|
||||
struct dtls_openssl_data *dtls_data = conn->dtls_data;
|
||||
if (dtls_data->len == 0) {
|
||||
@ -38,8 +60,7 @@ int dtls_openssl_bio_read(BIO *b, char *out, int maxlen)
|
||||
dtls_data->pos = 4;
|
||||
}
|
||||
|
||||
if (dtls_data->len > maxlen)
|
||||
{
|
||||
if (dtls_data->len > maxlen) {
|
||||
memcpy(out, dtls_data->buffer + dtls_data->pos, maxlen);
|
||||
dtls_data->len -= maxlen;
|
||||
dtls_data->pos += maxlen;
|
||||
@ -60,6 +81,7 @@ int dtls_openssl_bio_new(BIO *bi)
|
||||
bi->num = 0;
|
||||
bi->flags = 0;
|
||||
bi->ptr = NULL;
|
||||
cw_dbg(DBG_DTLS_BIO, "SSL BIO new");
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -67,7 +89,7 @@ int dtls_openssl_bio_new(BIO *bi)
|
||||
|
||||
int dtls_openssl_bio_puts(BIO * b, const char *str)
|
||||
{
|
||||
// printf("Bio puts: %s\n",str);
|
||||
cw_dbg(DBG_DTLS_BIO, "SSL BIO puts: '%s'", str);
|
||||
return dtls_openssl_bio_write(b, str, strlen(str));
|
||||
}
|
||||
|
||||
@ -90,8 +112,7 @@ long dtls_openssl_bio_ctrl(BIO *b, int cmd, long num, void *ptr)
|
||||
// printf("BIO CONTROL cmd=%d,num=%d\n",cmd,num);
|
||||
// exit(1);
|
||||
|
||||
switch (cmd)
|
||||
{
|
||||
switch (cmd) {
|
||||
case BIO_CTRL_RESET:
|
||||
case BIO_CTRL_EOF:
|
||||
ret = 0;
|
||||
@ -168,5 +189,3 @@ long dtls_openssl_bio_ctrl(BIO *b, int cmd, long num, void *ptr)
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user