Compare commits
4 commits
datastore-
...
master
Author | SHA1 | Date | |
---|---|---|---|
Théophile Bastian | 98a6b0d409 | ||
Théophile Bastian | ce6cbade91 | ||
Théophile Bastian | 092460c60d | ||
Théophile Bastian | 0289df4cdd |
|
@ -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
4
cfg.default
Normal 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!
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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}
|
||||||
|
|
Loading…
Reference in a new issue