Drain the ricotta: Line a sieve with cheesecloth or paper towels and set it over a bowl. Add ricotta and refrigerate at least 2 hours (overnight is best) to remove excess moisture.
This is key for a thick, non-runny filling.
Make the dough: In a mixing bowl, whisk flour, sugar, salt, and cinnamon. Cut in the cold butter with your fingers until it looks like coarse crumbs.
Add wet ingredients: Beat the egg with wine and vinegar. Pour into the flour mixture and stir until a shaggy dough forms.
If dry, add a teaspoon of wine at a time until it comes together.
Knead and rest: Turn the dough onto a lightly floured surface and knead 5–7 minutes until smooth and elastic. Wrap and rest 30–45 minutes at room temperature. Resting relaxes the gluten so the dough rolls thin.
Heat the oil: In a wide pot, heat 2 inches of oil to 350–360°F (175–182°C).
Keep a steady temperature for even blistering and crispness.
Roll the dough: Divide the dough into two pieces. Roll one piece very thin—about 1/16 inch. Cut circles 4 inches wide, or ovals about 4 x 5 inches.
Wrap the shells: Place each round over a cannoli tube.
Brush one edge with egg white, overlap edges, and press to seal firmly. Don’t seal too deep onto the tube or they’ll stick.
Fry in batches: Fry 2–3 shells at a time for 1–2 minutes until deep golden with bubbles. Adjust heat to keep the oil within range.
Transfer to a rack and cool 1–2 minutes, then gently slide off molds using tongs. Repeat.
Make the filling: In a bowl, combine drained ricotta, powdered sugar, vanilla, and zest. Mix until smooth.
Fold in chocolate chips if using. If too stiff, add a spoonful of cream at a time. Taste and adjust sweetness.
Fill just before serving: Spoon the filling into a piping bag.
Pipe from the center to one end, turn, and fill the other side. Dip ends in pistachios, chocolate, or candied peel. Dust with powdered sugar.