Soak the gammon overnight in cold water, if necessary, to remove excess salt. (Check the instructions on the packaging or ask the butcher if soaking is required.)
Drain, throw away the water and put the meat in a large saucepan and cover with fresh cold water. Stud the peeled onion with the cloves and put in the pan with the leeks, carrot, parsley, bay leaf, vinegar and peppercorns. Bring to the boil slowly, then reduce the heat and simmer gently for about 11/4 hours, depending on the size of the ham. (Allow roughly 20 minutes per 450g, plus 20 minutes.)
When the meat is tender, strain 400ml of the cooking juices and reserve. Carve the ham into thick slices and arrange on a warm serving dish.
Pour the strained juices into a small pan and reduce by half over a high heat. Blend the cornflour with the Madeira, stir into the reduced juices and cook for 2 minutes, stirring, until thickened. Add the cream, mustard and tarragon and heat through.
Coat the meat with a little of the sauce and serve the rest in a sauceboat. Garnish, if liked, with tarragon.
Leave the ham in the cooking water until you're ready to carve, as this will keep it moist and tender. * Serve with baked jacket potatoes and a dish of green vegetables, such as peas and broccoli. * Make a soup with the leftover cooking liquid. If there is any ham left over, dice into small pieces and add to the soup with some canned haricot beans and frozen mixed vegetables. Cook gently for 5–10 minutes.