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