aboutsummaryrefslogtreecommitdiff
path: root/src/peerinfo/peerinfo_api.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2011-01-03 14:21:25 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2011-01-03 14:21:25 +0000
commit748e690fe49e2639076cb76e6a4a4c5eb04e130e (patch)
treef76bcad30b4efc1f8daaf309ba38c3496603ce82 /src/peerinfo/peerinfo_api.c
parentcb3c882dbb05a797728dfd8b5983ade5a8999eac (diff)
downloadgnunet-748e690fe49e2639076cb76e6a4a4c5eb04e130e.tar.gz
gnunet-748e690fe49e2639076cb76e6a4a4c5eb04e130e.zip
Changed peerinfo api to distinguish between last element and timeout
Diffstat (limited to 'src/peerinfo/peerinfo_api.c')
-rw-r--r--src/peerinfo/peerinfo_api.c44
1 files changed, 27 insertions, 17 deletions
diff --git a/src/peerinfo/peerinfo_api.c b/src/peerinfo/peerinfo_api.c
index c2e091f00..a3a396d90 100644
--- a/src/peerinfo/peerinfo_api.c
+++ b/src/peerinfo/peerinfo_api.c
@@ -385,15 +385,16 @@ peerinfo_handler (void *cls, const struct GNUNET_MessageHeader *msg)
385 ic->h->in_receive = GNUNET_NO; 385 ic->h->in_receive = GNUNET_NO;
386 if (msg == NULL) 386 if (msg == NULL)
387 { 387 {
388 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 388 char * err_msg;
389 _("Failed to receive response from `%s' service.\n"), 389 GNUNET_asprintf(&err_msg,_("Failed to receive response from `%s' service.\n"),"PEERINFO");
390 "PEERINFO"); 390 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,err_msg);
391 reconnect (ic->h); 391 reconnect (ic->h);
392 trigger_transmit (ic->h); 392 trigger_transmit (ic->h);
393 if (ic->timeout_task != GNUNET_SCHEDULER_NO_TASK) 393 if (ic->timeout_task != GNUNET_SCHEDULER_NO_TASK)
394 GNUNET_SCHEDULER_cancel (ic->timeout_task); 394 GNUNET_SCHEDULER_cancel (ic->timeout_task);
395 if (ic->callback != NULL) 395 if (ic->callback != NULL)
396 ic->callback (ic->callback_cls, NULL, NULL); 396 ic->callback (ic->callback_cls, NULL, NULL, err_msg);
397 GNUNET_free (err_msg);
397 GNUNET_free (ic); 398 GNUNET_free (ic);
398 return; 399 return;
399 } 400 }
@@ -408,7 +409,7 @@ peerinfo_handler (void *cls, const struct GNUNET_MessageHeader *msg)
408 if (ic->timeout_task != GNUNET_SCHEDULER_NO_TASK) 409 if (ic->timeout_task != GNUNET_SCHEDULER_NO_TASK)
409 GNUNET_SCHEDULER_cancel (ic->timeout_task); 410 GNUNET_SCHEDULER_cancel (ic->timeout_task);
410 if (ic->callback != NULL) 411 if (ic->callback != NULL)
411 ic->callback (ic->callback_cls, NULL, NULL); 412 ic->callback (ic->callback_cls, NULL, NULL, NULL);
412 GNUNET_free (ic); 413 GNUNET_free (ic);
413 return; 414 return;
414 } 415 }
@@ -416,13 +417,17 @@ peerinfo_handler (void *cls, const struct GNUNET_MessageHeader *msg)
416 if ((ms < sizeof (struct InfoMessage)) || 417 if ((ms < sizeof (struct InfoMessage)) ||
417 (ntohs (msg->type) != GNUNET_MESSAGE_TYPE_PEERINFO_INFO)) 418 (ntohs (msg->type) != GNUNET_MESSAGE_TYPE_PEERINFO_INFO))
418 { 419 {
420 char * err_msg;
421 GNUNET_asprintf(&err_msg,_("Received invalid message from `%s' service.\n"),"PEERINFO");
422 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,err_msg);
419 GNUNET_break (0); 423 GNUNET_break (0);
420 reconnect (ic->h); 424 reconnect (ic->h);
421 trigger_transmit (ic->h); 425 trigger_transmit (ic->h);
422 if (ic->timeout_task != GNUNET_SCHEDULER_NO_TASK) 426 if (ic->timeout_task != GNUNET_SCHEDULER_NO_TASK)
423 GNUNET_SCHEDULER_cancel (ic->timeout_task); 427 GNUNET_SCHEDULER_cancel (ic->timeout_task);
424 if (ic->callback != NULL) 428 if (ic->callback != NULL)
425 ic->callback (ic->callback_cls, NULL, NULL); 429 ic->callback (ic->callback_cls, NULL, NULL, err_msg);
430 GNUNET_free (err_msg);
426 GNUNET_free (ic); 431 GNUNET_free (ic);
427 return; 432 return;
428 } 433 }
@@ -434,14 +439,17 @@ peerinfo_handler (void *cls, const struct GNUNET_MessageHeader *msg)
434 hello = (const struct GNUNET_HELLO_Message *) &im[1]; 439 hello = (const struct GNUNET_HELLO_Message *) &im[1];
435 if (ms != sizeof (struct InfoMessage) + GNUNET_HELLO_size (hello)) 440 if (ms != sizeof (struct InfoMessage) + GNUNET_HELLO_size (hello))
436 { 441 {
437 GNUNET_break (0); 442 char * err_msg;
443 GNUNET_asprintf(&err_msg,_("Received invalid message from `%s' service.\n"),"PEERINFO");
444 GNUNET_break (0);
438 reconnect (ic->h); 445 reconnect (ic->h);
439 trigger_transmit (ic->h); 446 trigger_transmit (ic->h);
440 if (ic->timeout_task != GNUNET_SCHEDULER_NO_TASK) 447 if (ic->timeout_task != GNUNET_SCHEDULER_NO_TASK)
441 GNUNET_SCHEDULER_cancel (ic->timeout_task); 448 GNUNET_SCHEDULER_cancel (ic->timeout_task);
442 if (ic->callback != NULL) 449 if (ic->callback != NULL)
443 ic->callback (ic->callback_cls, NULL, NULL); 450 ic->callback (ic->callback_cls, NULL, NULL, err_msg);
444 GNUNET_free (ic); 451 GNUNET_free (ic);
452 GNUNET_free (err_msg);
445 return; 453 return;
446 } 454 }
447 } 455 }
@@ -455,7 +463,7 @@ peerinfo_handler (void *cls, const struct GNUNET_MessageHeader *msg)
455#endif 463#endif
456 ic->h->in_receive = GNUNET_YES; 464 ic->h->in_receive = GNUNET_YES;
457 if (ic->callback != NULL) 465 if (ic->callback != NULL)
458 ic->callback (ic->callback_cls, &im->peer, hello); 466 ic->callback (ic->callback_cls, &im->peer, hello, NULL);
459 GNUNET_CLIENT_receive (ic->h->client, 467 GNUNET_CLIENT_receive (ic->h->client,
460 &peerinfo_handler, 468 &peerinfo_handler,
461 ic, 469 ic,
@@ -478,10 +486,9 @@ iterator_start_receive (void *cls,
478 486
479 if (GNUNET_OK != transmit_success) 487 if (GNUNET_OK != transmit_success)
480 { 488 {
481 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 489 char * err_msg;
482 _("Failed to transmit iteration request to `%s' service (%d).\n"), 490 GNUNET_asprintf(&err_msg,_("Failed to transmit iteration request to `%s' service (%d).\n"),"PEERINFO",transmit_success);
483 "PEERINFO", 491 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,err_msg);
484 transmit_success);
485 if (ic->timeout_task != GNUNET_SCHEDULER_NO_TASK) 492 if (ic->timeout_task != GNUNET_SCHEDULER_NO_TASK)
486 { 493 {
487 GNUNET_SCHEDULER_cancel (ic->timeout_task); 494 GNUNET_SCHEDULER_cancel (ic->timeout_task);
@@ -490,7 +497,8 @@ iterator_start_receive (void *cls,
490 reconnect (ic->h); 497 reconnect (ic->h);
491 trigger_transmit (ic->h); 498 trigger_transmit (ic->h);
492 if (ic->callback != NULL) 499 if (ic->callback != NULL)
493 ic->callback (ic->callback_cls, NULL, NULL); 500 ic->callback (ic->callback_cls, NULL, NULL, err_msg);
501 GNUNET_free (err_msg);
494 GNUNET_free (ic); 502 GNUNET_free (ic);
495 return; 503 return;
496 } 504 }
@@ -520,19 +528,21 @@ signal_timeout (void *cls,
520 const struct GNUNET_SCHEDULER_TaskContext *tc) 528 const struct GNUNET_SCHEDULER_TaskContext *tc)
521{ 529{
522 struct GNUNET_PEERINFO_IteratorContext *ic = cls; 530 struct GNUNET_PEERINFO_IteratorContext *ic = cls;
531 char * err_msg;
523 532
524 GNUNET_log (GNUNET_ERROR_TYPE_WARNING | GNUNET_ERROR_TYPE_BULK, 533 GNUNET_asprintf(&err_msg,_("Timeout transmitting iteration request to `%s' service.\n"),
525 _("Timeout transmitting iteration request to `%s' service.\n"),
526 "PEERINFO"); 534 "PEERINFO");
535 GNUNET_log (GNUNET_ERROR_TYPE_WARNING | GNUNET_ERROR_TYPE_BULK,err_msg);
527 ic->timeout_task = GNUNET_SCHEDULER_NO_TASK; 536 ic->timeout_task = GNUNET_SCHEDULER_NO_TASK;
528 if (! ic->in_receive) 537 if (! ic->in_receive)
529 GNUNET_CONTAINER_DLL_remove (ic->h->tq_head, 538 GNUNET_CONTAINER_DLL_remove (ic->h->tq_head,
530 ic->h->tq_tail, 539 ic->h->tq_tail,
531 ic->tqe); 540 ic->tqe);
532 reconnect (ic->h); 541 reconnect (ic->h);
533 ic->callback (ic->callback_cls, NULL, NULL); 542 ic->callback (ic->callback_cls, NULL, NULL,err_msg);
534 ic->callback = NULL; 543 ic->callback = NULL;
535 GNUNET_free_non_null (ic->tqe); 544 GNUNET_free_non_null (ic->tqe);
545 GNUNET_free (err_msg);
536 GNUNET_free (ic); 546 GNUNET_free (ic);
537} 547}
538 548