Compare commits

...

4 commits

Author SHA1 Message Date
Théophile Bastian 98a6b0d409 Add sample configuration file 2016-11-28 19:09:21 +01:00
Théophile Bastian ce6cbade91 Readme 2016-11-28 19:03:20 +01:00
Théophile Bastian 092460c60d Report 2016-11-28 19:00:24 +01:00
Théophile Bastian 0289df4cdd Fix > → >= 2016-11-28 18:53:49 +01:00
4 changed files with 19 additions and 1 deletions

View file

@ -26,6 +26,8 @@ arguments.
* `data [donnée]` : déclare une donnée à propager. La donnée peut contenir des * `data [donnée]` : déclare une donnée à propager. La donnée peut contenir des
espaces, et s'étend jusqu'à la fin de la ligne. espaces, et s'étend jusqu'à la fin de la ligne.
Un tel fichier de configuration « exemple » est fourni : `cfg.default`.
Le programme, à l'initialisation, lit le fichier puis le réécrit avec Le programme, à l'initialisation, lit le fichier puis le réécrit avec
éventuellement des données tirées au hasard si nécessaire (eg. ID du nœud). éventuellement des données tirées au hasard si nécessaire (eg. ID du nœud).
@ -34,3 +36,5 @@ d'erreur (stderr).
Le programme affiche son état actuel (voisins + infos sur eux, données + infos Le programme affiche son état actuel (voisins + infos sur eux, données + infos
sur elles) lors d'un appui sur RETURN. sur elles) lors d'un appui sur RETURN.
Un SIGINT (^C) permet l'arrêt propre du programme.

4
cfg.default Normal file
View file

@ -0,0 +1,4 @@
bootstrap 6722a421aadb51bd ::ffff:81.194.27.155 1212
data The game
data Second data
data Oh wow, a third one!

View file

@ -27,7 +27,7 @@ void DataStore::update() {
handleExpire(evt.id, evt.seqno); handleExpire(evt.id, evt.seqno);
} }
if(hasOwnData) { if(hasOwnData) {
if(time(NULL) - recvTime[myData] > csts::TIME_REPUBLISH_DATA) if(time(NULL) - recvTime[myData] >= csts::TIME_REPUBLISH_DATA)
handleRepublish(myData); handleRepublish(myData);
} }
} }

View file

@ -157,4 +157,14 @@ inonder initialisé avec la liste des voisins vers qui on souhaite inonder.
Régulièrement, \lstcpp{Flooder::update} est appelé, et se charge d'inonder Régulièrement, \lstcpp{Flooder::update} est appelé, et se charge d'inonder
plusieurs fois la donnée vers chaque pair de l'ayant pas encore acquittée. plusieurs fois la donnée vers chaque pair de l'ayant pas encore acquittée.
\subsection{Problèmes remarqués}
J'ai récemment remarqué que la manière dont je gère les seqno, à savoir prendre
pour seqno la valeur de \lstcpp{time(NULL)}, me rend d'autant plus % chktex 36
vulnérable aux attaques par republication de données fausses~: mon programme ne
se rend pas compte que sa donnée a été \og{}effacée~\fg, et --- pire --- si le
seqno utilisé est assez grand, mes republications n'auront aucun effet du point
de vue des autres nœuds pendant longtemps~: la donnée republiée semble
obsolète, est donc ignorée, puis la donnée stockée finit par expirer\ldots
\end{document} \end{document}