aboutsummaryrefslogtreecommitdiff
path: root/src/core/gnunet-service-core_sessions.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/gnunet-service-core_sessions.c')
-rw-r--r--src/core/gnunet-service-core_sessions.c82
1 files changed, 0 insertions, 82 deletions
diff --git a/src/core/gnunet-service-core_sessions.c b/src/core/gnunet-service-core_sessions.c
index 6ab97d7d0..c82c72863 100644
--- a/src/core/gnunet-service-core_sessions.c
+++ b/src/core/gnunet-service-core_sessions.c
@@ -122,12 +122,6 @@ struct Session
122 GNUNET_SCHEDULER_TaskIdentifier cork_task; 122 GNUNET_SCHEDULER_TaskIdentifier cork_task;
123 123
124 /** 124 /**
125 * Tracking bandwidth for receiving from this peer.
126 * // FIXME: need to set it!
127 */
128 struct GNUNET_BANDWIDTH_Tracker available_recv_window;
129
130 /**
131 * Available bandwidth out for this peer (current target). This 125 * Available bandwidth out for this peer (current target). This
132 * value should be the 'MIN' of 'bw_out_internal_limit' and 126 * value should be the 'MIN' of 'bw_out_internal_limit' and
133 * 'bw_out_external_limit'. 127 * 'bw_out_external_limit'.
@@ -732,82 +726,6 @@ GSC_SESSIONS_handle_client_have_peer (void *cls, struct GNUNET_SERVER_Client *cl
732 726
733 727
734/** 728/**
735 * Handle REQUEST_INFO request. For this request type, the client must
736 * have transmitted an INIT first.
737 *
738 * @param cls unused
739 * @param client client sending the request
740 * @param message iteration request message
741 */
742void
743GSC_SESSIONS_handle_client_request_info (void *cls, struct GNUNET_SERVER_Client *client,
744 const struct GNUNET_MessageHeader *message)
745{
746 const struct RequestInfoMessage *rcm;
747 struct Session *session;
748 struct ConfigurationInfoMessage cim;
749 int32_t want_reserv;
750 int32_t got_reserv;
751 struct GNUNET_TIME_Relative rdelay;
752
753 rdelay = GNUNET_TIME_UNIT_ZERO;
754#if DEBUG_CORE_CLIENT
755 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
756 "Core service receives `%s' request.\n",
757 "REQUEST_INFO");
758#endif
759 rcm = (const struct RequestInfoMessage *) message;
760 session = find_session (&rcm->peer);
761 if (NULL == session)
762 {
763 /* Technically, this COULD happen (due to asynchronous behavior),
764 * but it should be rare, so we should generate an info event
765 * to help diagnosis of serious errors that might be masked by this */
766 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
767 _("Client asked for preference change with peer `%s', which is not connected!\n"),
768 GNUNET_i2s (&rcm->peer));
769 GNUNET_SERVER_receive_done (client, GNUNET_OK);
770 return;
771 }
772
773 want_reserv = ntohl (rcm->reserve_inbound);
774 if (want_reserv < 0)
775 {
776 got_reserv = want_reserv;
777 }
778 else if (want_reserv > 0)
779 {
780 rdelay =
781 GNUNET_BANDWIDTH_tracker_get_delay (&session->available_recv_window,
782 want_reserv);
783 if (rdelay.rel_value == 0)
784 got_reserv = want_reserv;
785 else
786 got_reserv = 0; /* all or nothing */
787 }
788 else
789 got_reserv = 0;
790 GNUNET_BANDWIDTH_tracker_consume (&session->available_recv_window, got_reserv);
791#if DEBUG_CORE_QUOTA
792 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
793 "Received reservation request for %d bytes for peer `%4s', reserved %d bytes, suggesting delay of %llu ms\n",
794 (int) want_reserv, GNUNET_i2s (&rcm->peer), (int) got_reserv,
795 (unsigned long long) rdelay.rel_value);
796#endif
797 cim.header.size = htons (sizeof (struct ConfigurationInfoMessage));
798 cim.header.type = htons (GNUNET_MESSAGE_TYPE_CORE_CONFIGURATION_INFO);
799 cim.reserved_amount = htonl (got_reserv);
800 cim.reserve_delay = GNUNET_TIME_relative_hton (rdelay);
801 cim.rim_id = rcm->rim_id;
802 cim.bw_out = session->bw_out;
803 cim.preference = 0; /* FIXME: remove */
804 cim.peer = rcm->peer;
805 GSC_CLIENTS_send_to_client (client, &cim.header, GNUNET_NO);
806 GNUNET_SERVER_receive_done (client, GNUNET_OK);
807}
808
809
810/**
811 * Update information about a session. 729 * Update information about a session.
812 * 730 *
813 * @param peer peer who's session should be updated 731 * @param peer peer who's session should be updated