[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r17372 - gnunet/src/core
From: |
gnunet |
Subject: |
[GNUnet-SVN] r17372 - gnunet/src/core |
Date: |
Tue, 11 Oct 2011 14:57:14 +0200 |
Author: grothoff
Date: 2011-10-11 14:57:14 +0200 (Tue, 11 Oct 2011)
New Revision: 17372
Modified:
gnunet/src/core/gnunet-service-core_clients.c
gnunet/src/core/gnunet-service-core_kx.c
gnunet/src/core/gnunet-service-core_sessions.c
Log:
also allow deferral of encrypted messages
Modified: gnunet/src/core/gnunet-service-core_clients.c
===================================================================
--- gnunet/src/core/gnunet-service-core_clients.c 2011-10-11 12:33:07 UTC
(rev 17371)
+++ gnunet/src/core/gnunet-service-core_clients.c 2011-10-11 12:57:14 UTC
(rev 17372)
@@ -344,6 +344,10 @@
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST));
car->client_handle = c;
}
+ else
+ {
+ GSC_SESSIONS_dequeue_request (car);
+ }
car->target = req->peer;
car->deadline = GNUNET_TIME_absolute_ntoh (req->deadline);
car->priority = ntohl (req->priority);
Modified: gnunet/src/core/gnunet-service-core_kx.c
===================================================================
--- gnunet/src/core/gnunet-service-core_kx.c 2011-10-11 12:33:07 UTC (rev
17371)
+++ gnunet/src/core/gnunet-service-core_kx.c 2011-10-11 12:57:14 UTC (rev
17372)
@@ -294,6 +294,12 @@
struct PongMessage *pong_received;
/**
+ * Encrypted message we received from the other peer and
+ * did not process yet (or NULL).
+ */
+ struct EncryptedMessage *emsg_received;
+
+ /**
* Non-NULL if we are currently looking up HELLOs for this peer.
* for this peer.
*/
@@ -697,6 +703,7 @@
GNUNET_free_non_null (kx->skm_received);
GNUNET_free_non_null (kx->ping_received);
GNUNET_free_non_null (kx->pong_received);
+ GNUNET_free_non_null (kx->emsg_received);
GNUNET_free_non_null (kx->public_key);
GNUNET_free (kx);
}
@@ -1062,6 +1069,7 @@
{
const struct PongMessage *m;
struct PongMessage t;
+ struct EncryptedMessage *emsg;
struct GNUNET_CRYPTO_AesInitializationVector iv;
uint16_t msize;
@@ -1142,6 +1150,13 @@
GNUNET_SCHEDULER_cancel (kx->retry_set_key_task);
kx->retry_set_key_task = GNUNET_SCHEDULER_NO_TASK;
GNUNET_assert (kx->keep_alive_task == GNUNET_SCHEDULER_NO_TASK);
+ if (kx->emsg_received != NULL)
+ {
+ emsg = kx->emsg_received;
+ kx->emsg_received = NULL;
+ GSC_KX_handle_encrypted_message (kx, &emsg->header, NULL, 0 /* FIXME:
ATSI */);
+ GNUNET_free (emsg);
+ }
update_timeout (kx);
break;
case KX_STATE_UP:
@@ -1342,6 +1357,13 @@
1, GNUNET_NO);
return;
}
+ if (kx->status == KX_STATE_KEY_RECEIVED)
+ {
+ /* defer */
+ GNUNET_free_non_null (kx->ping_received);
+ kx->emsg_received = (struct EncryptedMessage*) GNUNET_copy_message (msg);
+ return;
+ }
/* validate hash */
derive_auth_key (&auth_key, &kx->decrypt_key, m->iv_seed,
kx->decrypt_key_created);
Modified: gnunet/src/core/gnunet-service-core_sessions.c
===================================================================
--- gnunet/src/core/gnunet-service-core_sessions.c 2011-10-11 12:33:07 UTC
(rev 17371)
+++ gnunet/src/core/gnunet-service-core_sessions.c 2011-10-11 12:57:14 UTC
(rev 17372)
@@ -715,6 +715,11 @@
if (NULL == nmap)
return; /* malformed */
session = find_session (peer);
+ if (NULL == session)
+ {
+ GNUNET_break (0);
+ return;
+ }
GSC_CLIENTS_notify_clients_about_neighbour (peer,
NULL, 0, /* FIXME: ATS */
session->tmap,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r17372 - gnunet/src/core,
gnunet <=