diff options
author | Christian Fuchs <christian.fuchs@cfuchs.net> | 2013-10-08 09:51:22 +0000 |
---|---|---|
committer | Christian Fuchs <christian.fuchs@cfuchs.net> | 2013-10-08 09:51:22 +0000 |
commit | e4d1e447165107a26080e48b2e8d0a60a72071f8 (patch) | |
tree | 05cfc11078cf11451b4a1882737c87dd6c1f616c /src/scalarproduct | |
parent | a0e0fd42ad49f1cd3972e78cc521bcfb67d7b6cb (diff) | |
download | gnunet-e4d1e447165107a26080e48b2e8d0a60a72071f8.tar.gz gnunet-e4d1e447165107a26080e48b2e8d0a60a72071f8.zip |
more work on multipart receiving
Diffstat (limited to 'src/scalarproduct')
-rw-r--r-- | src/scalarproduct/gnunet-service-scalarproduct.c | 15 |
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; | ||
2052 | except: | 2049 | except: |
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 |