mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +01:00
connectd: clean up decrypted packet memory handling.
Use tmpctx, rather than freeing manually everywhere (proof: next patch added a branch and forgot to free it!). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@@ -670,7 +670,7 @@ static struct io_plan *read_body_from_peer_done(struct io_conn *peer_conn,
|
|||||||
{
|
{
|
||||||
u8 *decrypted;
|
u8 *decrypted;
|
||||||
|
|
||||||
decrypted = cryptomsg_decrypt_body(NULL, &peer->cs,
|
decrypted = cryptomsg_decrypt_body(tmpctx, &peer->cs,
|
||||||
peer->peer_in);
|
peer->peer_in);
|
||||||
if (!decrypted) {
|
if (!decrypted) {
|
||||||
status_peer_debug(&peer->id, "Bad encrypted packet len %zu",
|
status_peer_debug(&peer->id, "Bad encrypted packet len %zu",
|
||||||
@@ -680,28 +680,20 @@ static struct io_plan *read_body_from_peer_done(struct io_conn *peer_conn,
|
|||||||
tal_free(peer->peer_in);
|
tal_free(peer->peer_in);
|
||||||
|
|
||||||
/* dev_disconnect can disable read */
|
/* dev_disconnect can disable read */
|
||||||
if (!IFDEV(peer->dev_read_enabled, true)) {
|
if (!IFDEV(peer->dev_read_enabled, true))
|
||||||
tal_free(decrypted);
|
|
||||||
return read_hdr_from_peer(peer_conn, peer);
|
return read_hdr_from_peer(peer_conn, peer);
|
||||||
}
|
|
||||||
|
|
||||||
/* Don't process packets while we're closing */
|
/* Don't process packets while we're closing */
|
||||||
if (peer->told_to_close) {
|
if (peer->told_to_close)
|
||||||
tal_free(decrypted);
|
|
||||||
return read_hdr_from_peer(peer_conn, peer);
|
return read_hdr_from_peer(peer_conn, peer);
|
||||||
}
|
|
||||||
|
|
||||||
/* If we swallow this, just try again. */
|
/* If we swallow this, just try again. */
|
||||||
if (handle_message_locally(peer, decrypted)) {
|
if (handle_message_locally(peer, decrypted))
|
||||||
tal_free(decrypted);
|
|
||||||
return read_hdr_from_peer(peer_conn, peer);
|
return read_hdr_from_peer(peer_conn, peer);
|
||||||
}
|
|
||||||
|
|
||||||
/* If there's no subd, discard and keep reading. */
|
/* If there's no subd, discard and keep reading. */
|
||||||
if (!peer->to_subd) {
|
if (!peer->to_subd)
|
||||||
tal_free(decrypted);
|
|
||||||
return read_hdr_from_peer(peer_conn, peer);
|
return read_hdr_from_peer(peer_conn, peer);
|
||||||
}
|
|
||||||
|
|
||||||
/* Tell them to write. */
|
/* Tell them to write. */
|
||||||
msg_enqueue(peer->subd_outq, take(decrypted));
|
msg_enqueue(peer->subd_outq, take(decrypted));
|
||||||
|
|||||||
Reference in New Issue
Block a user