aboutsummaryrefslogtreecommitdiff
path: root/src/scalarproduct
diff options
context:
space:
mode:
authorChristian Fuchs <christian.fuchs@cfuchs.net>2013-10-08 09:51:22 +0000
committerChristian Fuchs <christian.fuchs@cfuchs.net>2013-10-08 09:51:22 +0000
commite4d1e447165107a26080e48b2e8d0a60a72071f8 (patch)
tree05cfc11078cf11451b4a1882737c87dd6c1f616c /src/scalarproduct
parenta0e0fd42ad49f1cd3972e78cc521bcfb67d7b6cb (diff)
downloadgnunet-e4d1e447165107a26080e48b2e8d0a60a72071f8.tar.gz
gnunet-e4d1e447165107a26080e48b2e8d0a60a72071f8.zip
more work on multipart receiving
Diffstat (limited to 'src/scalarproduct')
-rw-r--r--src/scalarproduct/gnunet-service-scalarproduct.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/scalarproduct/gnunet-service-scalarproduct.c b/src/scalarproduct/gnunet-service-scalarproduct.c
index 518ff5f3d..65b6dffbf 100644
--- a/src/scalarproduct/gnunet-service-scalarproduct.c
+++ b/src/scalarproduct/gnunet-service-scalarproduct.c
@@ -1975,7 +1975,6 @@ handle_service_request (void *cls,
1975 } 1975 }
1976 1976
1977 memcpy (&session->peer, &session->peer, sizeof (struct GNUNET_PeerIdentity)); 1977 memcpy (&session->peer, &session->peer, sizeof (struct GNUNET_PeerIdentity));
1978 session->state = SERVICE_REQUEST_RECEIVED;
1979 session->element_count = ntohl (msg->element_count); 1978 session->element_count = ntohl (msg->element_count);
1980 session->used_element_count = used_elements; 1979 session->used_element_count = used_elements;
1981 session->transferred_element_count = contained_elements; 1980 session->transferred_element_count = contained_elements;
@@ -2008,12 +2007,11 @@ handle_service_request (void *cls,
2008 &needed_state, NULL); 2007 &needed_state, NULL);
2009 2008
2010 session->a = GNUNET_malloc (sizeof (gcry_mpi_t) * used_elements); 2009 session->a = GNUNET_malloc (sizeof (gcry_mpi_t) * used_elements);
2011 2010 session->state = WAITING_FOR_MULTIPART_TRANSMISSION;
2012 if (contained_elements != 0) { 2011 if (contained_elements != 0) {
2013 gcry_error_t ret = 0; 2012 gcry_error_t ret = 0;
2014 session->a = GNUNET_malloc (sizeof (gcry_mpi_t) * used_elements);
2015 // Convert each vector element to MPI_value 2013 // Convert each vector element to MPI_value
2016 for (i = 0; i < used_elements; i++) { 2014 for (i = 0; i < contained_elements; i++) {
2017 size_t read = 0; 2015 size_t read = 0;
2018 2016
2019 ret = gcry_mpi_scan (&session->a[i], 2017 ret = gcry_mpi_scan (&session->a[i],
@@ -2031,6 +2029,7 @@ handle_service_request (void *cls,
2031 2029
2032 if (contained_elements == used_elements) { 2030 if (contained_elements == used_elements) {
2033 // single part finished 2031 // single part finished
2032 session->state = SERVICE_REQUEST_RECEIVED;
2034 if (responder_session) { 2033 if (responder_session) {
2035 GNUNET_log (GNUNET_ERROR_TYPE_INFO, _ ("Got session with key %s and a matching element set, processing.\n"), GNUNET_h2s (&session->key)); 2034 GNUNET_log (GNUNET_ERROR_TYPE_INFO, _ ("Got session with key %s and a matching element set, processing.\n"), GNUNET_h2s (&session->key));
2036 if (GNUNET_OK != compute_service_response (session, responder_session)) { 2035 if (GNUNET_OK != compute_service_response (session, responder_session)) {
@@ -2044,18 +2043,16 @@ handle_service_request (void *cls,
2044 } 2043 }
2045 else{ 2044 else{
2046 // multipart message 2045 // multipart message
2047
2048 } 2046 }
2049
2050 return GNUNET_OK;
2051 } 2047 }
2048 return GNUNET_OK;
2052except: 2049except:
2053 for (i = 0; i < used_elements; i++) 2050 for (i = 0; i < contained_elements; i++)
2054 if (session->a[i]) 2051 if (session->a[i])
2055 gcry_mpi_release (session->a[i]); 2052 gcry_mpi_release (session->a[i]);
2056 gcry_sexp_release (session->remote_pubkey); 2053 gcry_sexp_release (session->remote_pubkey);
2057 session->remote_pubkey = NULL; 2054 session->remote_pubkey = NULL;
2058 GNUNET_free_non_null (session->a); 2055 GNUNET_free (session->a);
2059 session->a = NULL; 2056 session->a = NULL;
2060 free_session (session); 2057 free_session (session);
2061 // and notify our client-session that we could not complete the session 2058 // and notify our client-session that we could not complete the session