la condition ligne 48 est toujours vraie <=> l’instanciation de la variable “err” ligne 43 et de son initialisation à null.
ligne 54, la clé “code” , je suppose qu’elle devrait avoir comme valeur “NO_BLOCKSTAMP”
en l’état, si j’ai toutefois les deux erreurs qui surviennent , seul celle concernant le blockstamp va être retournée sans avoir connaissance de celle concernant la version, on execute la ligne 51 puis la ligne 54 et cette derniere ecrase l’information. (pourquoi pas…)
ne sachant pas comment tu gères le retour de la fonction (par ailleurs si elle est utilisée) je te propose toutefois de la reduire, a savoir si ces variables n’ont pas besoin d’être déclarées, les supprimer, de maniere a ne garder que les deux conditions et de retourner l’objet aussitôt l’erreur rencontrée :
if ( !a || !b )
return {code: 150, message: "Version unknown"};
if ( !c || !d )
return {code: 151, message: "Blockstamp is required"};
return false;
Enfin, ayant réalisé ma 1ere transac
je me demande si il y a un parsing qui n’est peut etre pas tout a fait exact ou si cela vient de python,
j’ai effectué mon 1er test avec la ligne suivante du champ “Comment” :
Comment: Merci pour la contribution, 1er test tx @ 15:11:24-05/10/17
Oui tes interrogations et propositions de correction sont fondées, il s’agit d’une très vieille implémentation vérifiant le format d’une transaction. En fait la fonction est redondante avec d’autres vérifications plus lointaines.
J’ai gardé ces vérifications car elles interviennent très tôt dans le contrôle et évite des traitements plus lourds ensuite. Ce parser tout comme ses collègues mériteraient largement un refactoring général, avec un fonctionnement plus clair et explicite.
cependant entre les 2 tests j’ai changé une partie du commentaire qui n’a rien a voir avec le début de la ligne c’est pour ca que je suis confus, ca me semble étonnant (c’est surement python…)
je ferais d’autres tests de mon coté voir ce que ca donne en recommencant et voir l’encodage qui doit me mettre dedans…
je ferais mes prochains tests sur gtest
je ne garantis pas que ca fail toujours, voila le script tel que ma variable ev est en parametre de curl :
#!/bin/bash
mdate=$(date '+%H:%M:%S-%d/%m/%y')
comment="Merci pour la contribution"
tx=$(printf "Comment: $comment")
echo "$tx"
echo ""
ev=$(python -c "import urllib; print urllib.quote_plus('''$tx\n''')" )
echo "$ev" ### <====== OK
echo ""
comment="Merci pour la contribution, 1er test tx @ $mdate"
tx=$(printf "Comment: $comment")
echo "$tx"
echo ""
ev=$(python -c "import urllib; print urllib.quote_plus('''$tx\n''')" )
echo "$ev" ### <===== FAIL