void on_tcp_read(uv_stream_t *stream, ssize_t nrd, const uv_buf_t *data) { uv_tls_t *parent = CONTAINER_OF(stream, uv_tls_t, skt); assert( parent != NULL); if ( nrd <= 0 ) { if( nrd == UV_EOF) { uv_tls_close((uv_handle_t*)stream, (uv_close_cb)free); } free(data->base); return; } static int is_tls = 0; static int is_first = 1; if (is_first) { if (is_tls_stream(data->base, nrd)) { evt_tls_feed_data(parent->tls, data->base, nrd); is_tls = 1; } is_first = 0; } else { if(is_tls) { evt_tls_feed_data(parent->tls, data->base, nrd); } } free(data->base); }
//Callback for testing void on_read(uv_tls_t* clnt, int nread, uv_buf_t* dcrypted) { if( nread <= 0 ) { if( nread == UV_EOF) { uv_tls_close(clnt, on_close); } return; } uv_write_t *rq = (uv_write_t*)malloc(sizeof(*rq)); assert(rq != 0); uv_tls_write(rq, clnt, dcrypted, on_write); free(dcrypted->base); dcrypted->base = NULL; }
void on_tcp_read(uv_stream_t *stream, ssize_t nrd, const uv_buf_t *data) { uv_tls_t *parent = CONTAINER_OF(stream, uv_tls_t, skt); assert( parent != NULL); if ( nrd <= 0 ) { if( nrd == UV_EOF) { uv_tls_close((uv_handle_t*)stream, (uv_close_cb)free); } free(data->base); return; } evt_tls_feed_data(parent->tls, data->base, nrd); free(data->base); }
void on_uv_handshake(uv_tls_t *ut, int status) { if ( 0 == status ) uv_tls_read((uv_stream_t*)ut, NULL, uv_rd_cb); else uv_tls_close((uv_handle_t*)ut, (uv_close_cb)free); }
void on_write(uv_tls_t *tls, int status) { uv_tls_close((uv_handle_t*)&tls->skt, (uv_close_cb)free); }