diff options
author | Bart Polot <bart@net.in.tum.de> | 2011-10-18 17:06:44 +0000 |
---|---|---|
committer | Bart Polot <bart@net.in.tum.de> | 2011-10-18 17:06:44 +0000 |
commit | 4a24e0518d613f184dd71658c7041b7f1913703c (patch) | |
tree | 8cec62c6e193001bc875a6b1e499ea0b69593c14 /src/mesh/gnunet-service-mesh.c | |
parent | 47448e370d62bbbdac46cc4825b0e88eb013ff90 (diff) | |
download | gnunet-4a24e0518d613f184dd71658c7041b7f1913703c.tar.gz gnunet-4a24e0518d613f184dd71658c7041b7f1913703c.zip |
WiP
Diffstat (limited to 'src/mesh/gnunet-service-mesh.c')
-rw-r--r-- | src/mesh/gnunet-service-mesh.c | 69 |
1 files changed, 20 insertions, 49 deletions
diff --git a/src/mesh/gnunet-service-mesh.c b/src/mesh/gnunet-service-mesh.c index 486684507..29dd2c89d 100644 --- a/src/mesh/gnunet-service-mesh.c +++ b/src/mesh/gnunet-service-mesh.c | |||
@@ -1704,6 +1704,25 @@ tunnel_send_multicast (struct MeshTunnel *t, | |||
1704 | 1704 | ||
1705 | 1705 | ||
1706 | /** | 1706 | /** |
1707 | * Send a message to all peers in this tunnel that the tunnel is no longer | ||
1708 | * valid. | ||
1709 | * | ||
1710 | * @param t The tunnel whose peers to notify. | ||
1711 | */ | ||
1712 | static void | ||
1713 | tunnel_send_destroy (struct MeshTunnel *t) | ||
1714 | { | ||
1715 | struct GNUNET_MESH_TunnelDestroy msg; | ||
1716 | |||
1717 | msg.header.size = htons (sizeof (msg)); | ||
1718 | msg.header.type = htons (GNUNET_MESSAGE_TYPE_MESH_TUNNEL_DESTROY); | ||
1719 | msg.oid = my_full_id; | ||
1720 | msg.tid = htonl (t->id.tid); | ||
1721 | tunnel_send_multicast (t, &msg.header); | ||
1722 | } | ||
1723 | |||
1724 | |||
1725 | /** | ||
1707 | * Destroy the tunnel and free any allocated resources linked to it | 1726 | * Destroy the tunnel and free any allocated resources linked to it |
1708 | * | 1727 | * |
1709 | * @param t the tunnel to destroy | 1728 | * @param t the tunnel to destroy |
@@ -1924,53 +1943,6 @@ send_core_create_path (void *cls, size_t size, void *buf) | |||
1924 | } | 1943 | } |
1925 | 1944 | ||
1926 | 1945 | ||
1927 | #if LATER | ||
1928 | /** | ||
1929 | * Function called to notify a client about the socket | ||
1930 | * being ready to queue more data. "buf" will be | ||
1931 | * NULL and "size" zero if the socket was closed for | ||
1932 | * writing in the meantime. | ||
1933 | * | ||
1934 | * @param cls closure (MeshDataDescriptor with all info to build packet) | ||
1935 | * @param size number of bytes available in buf | ||
1936 | * @param buf where the callee should write the message | ||
1937 | * @return number of bytes written to buf | ||
1938 | */ | ||
1939 | static size_t | ||
1940 | send_core_data_to_origin (void *cls, size_t size, void *buf) | ||
1941 | { | ||
1942 | struct MeshDataDescriptor *info = cls; | ||
1943 | struct GNUNET_MESH_ToOrigin *msg = buf; | ||
1944 | size_t total_size; | ||
1945 | |||
1946 | GNUNET_assert (NULL != info); | ||
1947 | total_size = sizeof (struct GNUNET_MESH_ToOrigin) + info->size; | ||
1948 | GNUNET_assert (total_size < 65536); /* UNIT16_MAX */ | ||
1949 | |||
1950 | if (total_size > size) | ||
1951 | { | ||
1952 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
1953 | "not enough buffer to send data to origin\n"); | ||
1954 | return 0; | ||
1955 | } | ||
1956 | msg->header.size = htons (total_size); | ||
1957 | msg->header.type = htons (GNUNET_MESSAGE_TYPE_DATA_MESSAGE_TO_ORIGIN); | ||
1958 | GNUNET_PEER_resolve (info->origin->oid, &msg->oid); | ||
1959 | msg->tid = htonl (info->origin->tid); | ||
1960 | if (0 != info->size) | ||
1961 | { | ||
1962 | memcpy (&msg[1], &info[1], info->size); | ||
1963 | } | ||
1964 | if (NULL != info->client) | ||
1965 | { | ||
1966 | GNUNET_SERVER_receive_done (info->client, GNUNET_OK); | ||
1967 | } | ||
1968 | GNUNET_free (info); | ||
1969 | return total_size; | ||
1970 | } | ||
1971 | #endif | ||
1972 | |||
1973 | |||
1974 | /** | 1946 | /** |
1975 | * Function called to notify a client about the socket | 1947 | * Function called to notify a client about the socket |
1976 | * being ready to queue more data. "buf" will be | 1948 | * being ready to queue more data. "buf" will be |
@@ -2150,7 +2122,7 @@ send_core_data_raw (void *cls, size_t size, void *buf) | |||
2150 | * @return Size of data put in buffer | 2122 | * @return Size of data put in buffer |
2151 | */ | 2123 | */ |
2152 | static size_t | 2124 | static size_t |
2153 | send_p2p_tunnel_destroy (void *cls, size_t size, void *buf) | 2125 | send_core_tunnel_destroy (void *cls, size_t size, void *buf) |
2154 | { | 2126 | { |
2155 | struct MeshTunnel *t = cls; | 2127 | struct MeshTunnel *t = cls; |
2156 | struct MeshClient *c; | 2128 | struct MeshClient *c; |
@@ -3221,7 +3193,6 @@ handle_local_tunnel_destroy (void *cls, struct GNUNET_SERVER_Client *client, | |||
3221 | t = GNUNET_CONTAINER_multihashmap_get (c->tunnels, &hash); | 3193 | t = GNUNET_CONTAINER_multihashmap_get (c->tunnels, &hash); |
3222 | GNUNET_CONTAINER_multihashmap_remove (c->tunnels, &hash, t); | 3194 | GNUNET_CONTAINER_multihashmap_remove (c->tunnels, &hash, t); |
3223 | 3195 | ||
3224 | // notify_tunnel_destroy(t); | ||
3225 | tunnel_destroy(t); | 3196 | tunnel_destroy(t); |
3226 | GNUNET_SERVER_receive_done (client, GNUNET_OK); | 3197 | GNUNET_SERVER_receive_done (client, GNUNET_OK); |
3227 | return; | 3198 | return; |