Faits:
A. De 2003 à 2008, X._ a téléchargé des milliers de fichiers à contenu pornographique, représentant des scènes de pédophilie, de zoophilie, d'urolanie et de scatologie. Il les stockait ensuite sur des disques durs externes. Pour se les procurer, il a utilisé le logiciel d'un réseau pair à pair mettant les fichiers qu'il téléchargeait à la disposition des autres internautes connectés.
Par jugement du 15 juillet 2009, le Tribunal correctionnel de l'arrondissement de La Côte l'a condamné, pour mise à disposition de représentations pornographiques à des mineurs de moins de seize ans (art. 197 ch. 1 CP) et fabrication de pornographie dure (art. 197 ch. 3 al. 1 CP), à quinze mois de privation de liberté, dont neuf avec sursis pendant cinq ans, ordonné au condamné de se soumettre à un traitement psychiatrique ambulatoire en détention, subordonné le maintien du sursis partiel à la condition qu'il poursuive ce traitement après sa libération et révoqué un sursis antérieur.
B. Par arrêt du 30 septembre 2009, la Cour de cassation pénale du Tribunal cantonal du canton de Vaud a confirmé ce jugement.
C. X._ recourt au Tribunal fédéral contre cet arrêt, dont il conclut à la réforme en ce sens qu'il soit acquitté des chefs de mise à disposition de représentations pornographiques à des mineurs de moins de seize ans (art. 197 ch. 1 CP) et de fabrication de pornographie dure (art. 197 ch. 3 al. 1 CP), condamné pour obtention par la voie électronique et possession de pornographie dure (art. 197 ch. 3bis CP) à une peine pécuniaire ferme modérée et astreint à suivre le traitement ambulatoire.
À titre préalable, il demande l'assistance judiciaire.
Considérant en droit:
1. Le recourant admet qu'en qualifiant ses actes de mise à disposition de représentations pornographiques à des mineurs de moins de seize ans, au sens de l'art. 197 ch. 1 CP, et de fabrication de pornographie dure, au sens de l'art. 197 ch. 3 al. 1 CP, l'arrêt attaqué applique correctement la jurisprudence publiée du Tribunal fédéral, en particulier l'ATF 131 IV 16. Mais, se référant aux critiques de la doctrine, il soutient que l'interprétation que la jurisprudence fait des art. 197 ch. 1 et 197 ch. 3 al. 1 CP ne correspond pas à la volonté du législateur, à tout le moins depuis l'entrée en vigueur de l'art. 197 ch. 3bis CP.
La cour de céans a déjà rejeté les critiques doctrinales invoquées par le recourant dans un arrêt 6B_289/2009 du 16 septembre 2009, auquel il peut être renvoyé. À cet égard, le recours est donc mal fondé.
2. Le recourant qui veut faire valoir que l'autorité inférieure a établi les faits de manière manifestement inexacte, c'est-à-dire arbitraire (cf. arrêt 6B_178/2007 du 23 juillet 2007 consid. 1.2, non publié aux ATF 133 IV 286), ou en violation du droit au sens de l'art. 95 LTF, doit expliquer de manière circonstanciée en quoi ce serait le cas. À défaut de comporter ces précisions, son moyen ne peut être pris en compte (cf. ATF 133 IV 286 consid. 6.2 p. 288).
En l'espèce, le recourant soutient également, comme moyen subsidiaire, qu'il ignorait que le logiciel pair à pair mettait les fichiers téléchargés à la disposition des tiers. L'élément subjectif de l'infraction prévue à l'art. 197 ch. 3 al. 1 CP ne serait ainsi pas réalisé. Ce faisant, il s'écarte des constatations de l'arrêt attaqué, qui retient qu'il a mis "consciemment" des fichiers de pornographie dure à la disposition des autres internautes (cf. arrêt attaqué, consid. 3c p. 9). Mais il n'indique pas en quoi cette constatation serait arbitraire, de sorte qu'il n'y a pas lieu d'entrer en matière sur son moyen.
Le recours doit dès lors être rejeté dans la mesure où il est recevable.
3. Comme ses conclusions sont apparues d'emblée dépourvues de chance de succès, le recourant, qui n'a au demeurant pas démontré qu'il se trouverait dans le besoin, doit être débouté de sa demande d'assistance judiciaire (art. 64 al. 1 LTF a contrario) et supporter les frais de justice (art. 66 al. 1 LTF).
Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est rejeté dans la mesure où il est recevable.
2. La demande d'assistance judiciaire est rejetée.
3. Les frais judiciaires, arrêtés à 2'000 fr., sont mis à la charge du recourant.
4. Le présent arrêt est communiqué aux parties et au Tribunal cantonal du canton de Vaud, Cour de cassation pénale.
Lausanne, le 12 janvier 2010
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président: Le Greffier:
Favre Oulevey