diff options
Diffstat (limited to 'src/gnunet_chat_lib.c')
-rw-r--r-- | src/gnunet_chat_lib.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/gnunet_chat_lib.c b/src/gnunet_chat_lib.c index 8be813b..a835e48 100644 --- a/src/gnunet_chat_lib.c +++ b/src/gnunet_chat_lib.c | |||
@@ -306,7 +306,7 @@ GNUNET_CHAT_contact_set_user_pointer (struct GNUNET_CHAT_Contact *contact, | |||
306 | 306 | ||
307 | 307 | ||
308 | void* | 308 | void* |
309 | GNUNET_CHAT_contact_get_user_pointer (struct GNUNET_CHAT_Contact *contact) | 309 | GNUNET_CHAT_contact_get_user_pointer (const struct GNUNET_CHAT_Contact *contact) |
310 | { | 310 | { |
311 | if (!contact) | 311 | if (!contact) |
312 | return NULL; | 312 | return NULL; |
@@ -611,7 +611,7 @@ GNUNET_CHAT_context_iterate_messages (struct GNUNET_CHAT_Context *context, | |||
611 | enum GNUNET_CHAT_MessageKind | 611 | enum GNUNET_CHAT_MessageKind |
612 | GNUNET_CHAT_message_get_kind (const struct GNUNET_CHAT_Message *message) | 612 | GNUNET_CHAT_message_get_kind (const struct GNUNET_CHAT_Message *message) |
613 | { | 613 | { |
614 | if (!message) | 614 | if ((!message) || (!(message->msg))) |
615 | return GNUNET_CHAT_KIND_UNKNOWN; | 615 | return GNUNET_CHAT_KIND_UNKNOWN; |
616 | 616 | ||
617 | switch (message->msg->header.kind) | 617 | switch (message->msg->header.kind) |
@@ -641,7 +641,7 @@ GNUNET_CHAT_message_get_kind (const struct GNUNET_CHAT_Message *message) | |||
641 | struct GNUNET_TIME_Absolute | 641 | struct GNUNET_TIME_Absolute |
642 | GNUNET_CHAT_message_get_timestamp (const struct GNUNET_CHAT_Message *message) | 642 | GNUNET_CHAT_message_get_timestamp (const struct GNUNET_CHAT_Message *message) |
643 | { | 643 | { |
644 | if (!message) | 644 | if ((!message) || (!(message->msg))) |
645 | return GNUNET_TIME_absolute_get_zero_(); | 645 | return GNUNET_TIME_absolute_get_zero_(); |
646 | 646 | ||
647 | return GNUNET_TIME_absolute_ntoh(message->msg->header.timestamp); | 647 | return GNUNET_TIME_absolute_ntoh(message->msg->header.timestamp); |
@@ -701,19 +701,29 @@ GNUNET_CHAT_message_get_read_receipt (const struct GNUNET_CHAT_Message *message, | |||
701 | GNUNET_CHAT_MessageReadReceiptCallback callback, | 701 | GNUNET_CHAT_MessageReadReceiptCallback callback, |
702 | void *cls) | 702 | void *cls) |
703 | { | 703 | { |
704 | if (!message) | 704 | if ((!message) || (!(message->msg))) |
705 | return GNUNET_SYSERR; | 705 | return GNUNET_SYSERR; |
706 | 706 | ||
707 | // TODO: request read receipt? / check if newer message was received of sender? | 707 | struct GNUNET_CHAT_Context *context = message->context; |
708 | 708 | ||
709 | return GNUNET_SYSERR; | 709 | if (!context) |
710 | return GNUNET_SYSERR; | ||
711 | |||
712 | struct GNUNET_CHAT_MessageIterateReadReceipts it; | ||
713 | it.message = message; | ||
714 | it.cb = callback; | ||
715 | it.cls = cls; | ||
716 | |||
717 | return GNUNET_MESSENGER_iterate_members( | ||
718 | context->room, it_message_iterate_read_receipts, &it | ||
719 | ); | ||
710 | } | 720 | } |
711 | 721 | ||
712 | 722 | ||
713 | const char* | 723 | const char* |
714 | GNUNET_CHAT_message_get_text (const struct GNUNET_CHAT_Message *message) | 724 | GNUNET_CHAT_message_get_text (const struct GNUNET_CHAT_Message *message) |
715 | { | 725 | { |
716 | if (!message) | 726 | if ((!message) || (!(message->msg))) |
717 | return NULL; | 727 | return NULL; |
718 | 728 | ||
719 | if (GNUNET_MESSENGER_KIND_TEXT != message->msg->header.kind) | 729 | if (GNUNET_MESSENGER_KIND_TEXT != message->msg->header.kind) |
@@ -726,7 +736,7 @@ GNUNET_CHAT_message_get_text (const struct GNUNET_CHAT_Message *message) | |||
726 | struct GNUNET_CHAT_File* | 736 | struct GNUNET_CHAT_File* |
727 | GNUNET_CHAT_message_get_file (const struct GNUNET_CHAT_Message *message) | 737 | GNUNET_CHAT_message_get_file (const struct GNUNET_CHAT_Message *message) |
728 | { | 738 | { |
729 | if (!message) | 739 | if ((!message) || (!(message->msg))) |
730 | return NULL; | 740 | return NULL; |
731 | 741 | ||
732 | if (GNUNET_MESSENGER_KIND_FILE != message->msg->header.kind) | 742 | if (GNUNET_MESSENGER_KIND_FILE != message->msg->header.kind) |
@@ -742,7 +752,7 @@ GNUNET_CHAT_message_get_file (const struct GNUNET_CHAT_Message *message) | |||
742 | struct GNUNET_CHAT_Invitation* | 752 | struct GNUNET_CHAT_Invitation* |
743 | GNUNET_CHAT_message_get_invitation (const struct GNUNET_CHAT_Message *message) | 753 | GNUNET_CHAT_message_get_invitation (const struct GNUNET_CHAT_Message *message) |
744 | { | 754 | { |
745 | if (!message) | 755 | if ((!message) || (!(message->msg))) |
746 | return NULL; | 756 | return NULL; |
747 | 757 | ||
748 | if (GNUNET_MESSENGER_KIND_INVITE != message->msg->header.kind) | 758 | if (GNUNET_MESSENGER_KIND_INVITE != message->msg->header.kind) |
@@ -759,7 +769,7 @@ int | |||
759 | GNUNET_CHAT_message_delete (const struct GNUNET_CHAT_Message *message, | 769 | GNUNET_CHAT_message_delete (const struct GNUNET_CHAT_Message *message, |
760 | struct GNUNET_TIME_Relative delay) | 770 | struct GNUNET_TIME_Relative delay) |
761 | { | 771 | { |
762 | if (!message) | 772 | if ((!message) || (!(message->msg))) |
763 | return GNUNET_SYSERR; | 773 | return GNUNET_SYSERR; |
764 | 774 | ||
765 | struct GNUNET_MESSENGER_Message msg; | 775 | struct GNUNET_MESSENGER_Message msg; |