Free txbuf, rxbuf in vconn-ssl and vconn-stream destructors.
This bug was causing secchan to leak a little bit of memory on almost every connection close. This is most visible when openflow-monitor is running, because openflow-monitor connects to secchan once per second.
This commit is contained in:
1 parent
320437cd40
commit
0ae1bf3ac4
2 files changed
+7
No files matched your search
@@ -170,6 +170,7 @@ static int ssl_init(void);
|
||||
static int do_ssl_init(void);
|
||||
static bool ssl_wants_io(int ssl_error);
|
||||
static void ssl_close(struct vconn *);
|
||||
static void ssl_clear_txbuf(struct ssl_vconn *);
|
||||
static int interpret_ssl_error(const char *function, int ret, int error,
|
||||
int *want);
|
||||
static void ssl_tx_poll_callback(int fd, short int revents, void *vconn_);
|
||||
@@ -482,6 +483,8 @@ ssl_close(struct vconn *vconn)
|
||||
{
|
||||
struct ssl_vconn *sslv = ssl_vconn_cast(vconn);
|
||||
poll_cancel(sslv->tx_waiter);
|
||||
ssl_clear_txbuf(sslv);
|
||||
ofpbuf_delete(sslv->rxbuf);
|
||||
SSL_free(sslv->ssl);
|
||||
close(sslv->fd);
|
||||
free(sslv);
|
||||
|
||||
@@ -66,6 +66,8 @@ static struct vconn_class stream_vconn_class;
|
||||
|
||||
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(10, 25);
|
||||
|
||||
static void stream_clear_txbuf(struct stream_vconn *);
|
||||
|
||||
int
|
||||
new_stream_vconn(const char *name, int fd, int connect_status,
|
||||
uint32_t ip, struct vconn **vconnp)
|
||||
@@ -94,6 +96,8 @@ stream_close(struct vconn *vconn)
|
||||
{
|
||||
struct stream_vconn *s = stream_vconn_cast(vconn);
|
||||
poll_cancel(s->tx_waiter);
|
||||
stream_clear_txbuf(s);
|
||||
ofpbuf_delete(s->rxbuf);
|
||||
close(s->fd);
|
||||
free(s);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user