|
@@ -118,6 +118,9 @@ func serve(c net.Conn) {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ if Seen(m.ID) {
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
fmt.Printf("%#v\n", m)
|
|
|
broadcast(m)
|
|
@@ -134,6 +137,8 @@ func readInput() {
|
|
|
Body: s.Text(),
|
|
|
}
|
|
|
|
|
|
+ Seen(m.ID)
|
|
|
+
|
|
|
broadcast(m)
|
|
|
}
|
|
|
if err := s.Err(); err != nil {
|
|
@@ -170,11 +175,20 @@ func dial(addr string) {
|
|
|
}
|
|
|
|
|
|
|
|
|
+var seen_messages map[string]bool = make(map[string]bool)
|
|
|
+var seen_mutex sync.RWMutex
|
|
|
|
|
|
|
|
|
|
|
|
func Seen(id string) bool {
|
|
|
|
|
|
+ defer seen_mutex.Unlock()
|
|
|
+ seen_mutex.Lock()
|
|
|
|
|
|
-
|
|
|
+ seen, ok := seen_messages[id]
|
|
|
+ if !ok {
|
|
|
+
|
|
|
+ seen_messages[id] = true
|
|
|
+ }
|
|
|
+ return seen
|
|
|
}
|