10/07/2010, 02:19
(Modification du message : 10/07/2010, 02:28 par MenzAgitat.)
la ligne return $lvl met fin à ta procédure en retournant le contenu de la variable $lvl; par conséquent, quand cela se produit, la ligne catch {close $channel} n'est pas exécutée et le handle reste ouvert.
Après un certain nombre d'utilisations de ta commande, les handles restés ouverts se sont cumulés jusqu'à atteindre la limite maximum autorisée par ton eggdrop et tu obtiens cette erreur.
La solution est de remplacer
par
Et au passage, pourquoi utiliser catch lors de l'ouverture et de la fermeture ?
Il existe une panoplie de commandes pour vérifier l'existence d'un fichier ou non, le droit de le lire/écrire ou non, etc...
Plutôt qu'utiliser catch pour que les erreurs ne soient pas gênantes, gère-les.
Jette un oeil aux commandes suivantes :
file exists
file readable
file writable
Après un certain nombre d'utilisations de ta commande, les handles restés ouverts se sont cumulés jusqu'à atteindre la limite maximum autorisée par ton eggdrop et tu obtiens cette erreur.
La solution est de remplacer
tcl
if {$ident eq $::ident($pseudo) || $ident eq "any"} {
return $lvl
}
par
tcl
if {$ident eq $::ident($pseudo) || $ident eq "any"} {
close $channel
return $lvl
}
Et au passage, pourquoi utiliser catch lors de l'ouverture et de la fermeture ?
Il existe une panoplie de commandes pour vérifier l'existence d'un fichier ou non, le droit de le lire/écrire ou non, etc...
Plutôt qu'utiliser catch pour que les erreurs ne soient pas gênantes, gère-les.
Jette un oeil aux commandes suivantes :
file exists
file readable
file writable