diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2011-01-03 14:21:25 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2011-01-03 14:21:25 +0000 |
commit | 748e690fe49e2639076cb76e6a4a4c5eb04e130e (patch) | |
tree | f76bcad30b4efc1f8daaf309ba38c3496603ce82 /src/peerinfo/peerinfo_api.c | |
parent | cb3c882dbb05a797728dfd8b5983ade5a8999eac (diff) | |
download | gnunet-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.c | 44 |
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 | ||