Preheat oven to 350 degrees F (175 degrees C). Grease and flour a 9 inch round cake pan.
In a medium bowl, cream together the butter and sugar until light and fluffy. Beat in the eggs one at a time, then stir in the vanilla. Combine the flour, baking powder and salt; stir into the creamed mixture alternately with the milk.
Pour batter into prepared pan. Bake for 30 to 40 minutes in the preheated oven, or until a toothpick inserted into the center of the cake comes out clean. Allow to cool for 10 minutes before removing from pan.
To Make Filling: In a medium saucepan, combine 1/2 cup sugar, 3 tablespoons cornstarch and pinch of salt. Gradually stir in 2 cups cold milk until smooth. Cook over medium heat, stirring constantly, until mixture thickens and boils. Boil for 1 minute; remove from heat.
Stir in 2 tablespoons butter and 1 teaspoon vanilla extract; cool slightly.
To Make Frosting: In a medium saucepan over low heat, melt 1/4 cup butter. Stir in 3 tablespoons cocoa, 6 tablespoons milk and 1 teaspoon vanilla extract. Gradually add 2 cups confectioners' sugar; beat until smooth.
Spread filling between layers of cake and over top of cake. Spread frosting over top and sides of cake.