Melt the butter in a saucepan, add onions and bay leaves and fry over medium heat for 10-15 minutes.
Add flour and cook for another 1 minute, then pour the white wine and broth, bring to a boil.
Season with salt and pepper. Simmer the soup, stirring occasionally, 30 minutes.
Add Madeira wine and cook for another 5-10 minutes. Remove the bay leaf.
Pour cooked soup in bowls, put toasts on top, sprinkle with gruyere cheese and place under the grill until cheese has melted.
Ready in: 70 minutes.