aboutsummaryrefslogtreecommitdiff
path: root/src/gnunet/service/gns/service.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/gnunet/service/gns/service.go')
-rw-r--r--src/gnunet/service/gns/service.go22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/gnunet/service/gns/service.go b/src/gnunet/service/gns/service.go
index 19ddc14..45eb700 100644
--- a/src/gnunet/service/gns/service.go
+++ b/src/gnunet/service/gns/service.go
@@ -62,8 +62,6 @@ func NewService(ctx context.Context, c *core.Core) service.Service {
62 srv := &Service{ 62 srv := &Service{
63 Module: *mod, 63 Module: *mod,
64 } 64 }
65 srv.ProcessFcn = srv.HandleMessage
66
67 // set external function references (external services) 65 // set external function references (external services)
68 srv.LookupLocal = srv.LookupNamecache 66 srv.LookupLocal = srv.LookupNamecache
69 srv.StoreLocal = srv.StoreNamecache 67 srv.StoreLocal = srv.StoreNamecache
@@ -98,7 +96,8 @@ func (s *Service) ServeClient(ctx context.Context, id int, mc *service.Connectio
98 logger.Printf(logger.INFO, "[gns:%d:%d] Received request: %v\n", id, reqID, msg) 96 logger.Printf(logger.INFO, "[gns:%d:%d] Received request: %v\n", id, reqID, msg)
99 97
100 // handle message 98 // handle message
101 s.HandleMessage(context.WithValue(ctx, "label", fmt.Sprintf(":%d:%d", id, reqID)), msg, mc) 99 valueCtx := context.WithValue(ctx, service.CtxKey("label"), fmt.Sprintf(":%d:%d", id, reqID))
100 s.HandleMessage(valueCtx, nil, msg, mc)
102 } 101 }
103 // close client connection 102 // close client connection
104 mc.Close() 103 mc.Close()
@@ -109,11 +108,11 @@ func (s *Service) ServeClient(ctx context.Context, id int, mc *service.Connectio
109} 108}
110 109
111// Handle a single incoming message 110// Handle a single incoming message
112func (s *Service) HandleMessage(ctx context.Context, msg message.Message, back transport.Responder) bool { 111func (s *Service) HandleMessage(ctx context.Context, sender *util.PeerID, msg message.Message, back transport.Responder) bool {
113 // assemble log label 112 // assemble log label
114 label := "" 113 label := ""
115 if v := ctx.Value("label"); v != nil { 114 if v := ctx.Value("label"); v != nil {
116 label = v.(string) 115 label, _ = v.(string)
117 } 116 }
118 // perform lookup 117 // perform lookup
119 switch m := msg.(type) { 118 switch m := msg.(type) {
@@ -123,7 +122,7 @@ func (s *Service) HandleMessage(ctx context.Context, msg message.Message, back t
123 //---------------------------------------------------------- 122 //----------------------------------------------------------
124 123
125 // perform lookup on block (locally and remote) 124 // perform lookup on block (locally and remote)
126 go func(m *message.LookupMsg) { 125 go func(m *message.LookupMsg, label string) {
127 logger.Printf(logger.INFO, "[gns%s] Lookup request received.\n", label) 126 logger.Printf(logger.INFO, "[gns%s] Lookup request received.\n", label)
128 resp := message.NewGNSLookupResultMsg(m.ID) 127 resp := message.NewGNSLookupResultMsg(m.ID)
129 defer func() { 128 defer func() {
@@ -137,7 +136,6 @@ func (s *Service) HandleMessage(ctx context.Context, msg message.Message, back t
137 logger.Printf(logger.DBG, "[gns%s] Lookup request finished.\n", label) 136 logger.Printf(logger.DBG, "[gns%s] Lookup request finished.\n", label)
138 }() 137 }()
139 138
140 label := m.GetName()
141 kind := NewRRTypeList(enums.GNSType(m.Type)) 139 kind := NewRRTypeList(enums.GNSType(m.Type))
142 recset, err := s.Resolve(ctx, label, m.Zone, kind, int(m.Options), 0) 140 recset, err := s.Resolve(ctx, label, m.Zone, kind, int(m.Options), 0)
143 if err != nil { 141 if err != nil {
@@ -163,11 +161,13 @@ func (s *Service) HandleMessage(ctx context.Context, msg message.Message, back t
163 // is this the record type we are looking for? 161 // is this the record type we are looking for?
164 if rec.Type == m.Type || enums.GNSType(m.Type) == enums.GNS_TYPE_ANY { 162 if rec.Type == m.Type || enums.GNSType(m.Type) == enums.GNS_TYPE_ANY {
165 // add it to the response message 163 // add it to the response message
166 resp.AddRecord(rec) 164 if err := resp.AddRecord(rec); err != nil {
165 logger.Printf(logger.ERROR, "[gns%s] failed: %sv", label, err.Error())
166 }
167 } 167 }
168 } 168 }
169 } 169 }
170 }(m) 170 }(m, label)
171 171
172 default: 172 default:
173 //---------------------------------------------------------- 173 //----------------------------------------------------------
@@ -374,7 +374,7 @@ func (s *Service) LookupDHT(ctx context.Context, query blocks.Query) (block bloc
374 // send DHT GET request and wait for response 374 // send DHT GET request and wait for response
375 reqGet := message.NewDHTClientGetMsg(query.Key()) 375 reqGet := message.NewDHTClientGetMsg(query.Key())
376 reqGet.ID = uint64(util.NextID()) 376 reqGet.ID = uint64(util.NextID())
377 reqGet.ReplLevel = uint32(enums.DHT_GNS_REPLICATION_LEVEL) 377 reqGet.ReplLevel = uint32(enums.GNS_REPLICATION_LEVEL)
378 reqGet.Type = uint32(enums.BLOCK_TYPE_GNS_NAMERECORD) 378 reqGet.Type = uint32(enums.BLOCK_TYPE_GNS_NAMERECORD)
379 reqGet.Options = uint32(enums.DHT_RO_DEMULTIPLEX_EVERYWHERE) 379 reqGet.Options = uint32(enums.DHT_RO_DEMULTIPLEX_EVERYWHERE)
380 380
@@ -419,7 +419,7 @@ func (s *Service) LookupDHT(ctx context.Context, query blocks.Query) (block bloc
419 } 419 }
420 420
421 // get GNSBlock from message 421 // get GNSBlock from message
422 qGNS := query.(*blocks.GNSQuery) 422 qGNS, _ := query.(*blocks.GNSQuery)
423 block = new(blocks.GNSBlock) 423 block = new(blocks.GNSBlock)
424 if err = data.Unmarshal(block, m.Data); err != nil { 424 if err = data.Unmarshal(block, m.Data); err != nil {
425 logger.Printf(logger.ERROR, "[gns] can't read GNS block: %s\n", err.Error()) 425 logger.Printf(logger.ERROR, "[gns] can't read GNS block: %s\n", err.Error())