diff --git a/src/box/call.c b/src/box/call.c
index 1692107673c14003135d15560a160203a1bc2d5c..48b19f81ac3e672b1fd3e592691e48f1ff415a47 100644
--- a/src/box/call.c
+++ b/src/box/call.c
@@ -165,6 +165,7 @@ box_process_eval(struct call_request *request, struct port *port)
 	txn = in_txn();
 	if (txn != NULL) {
 		diag_set(ClientError, ER_FUNCTION_TX_ACTIVE);
+		port_destroy(port);
 		txn_rollback(txn);
 		fiber_gc();
 		return -1;