diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2011-08-25 14:17:53 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2011-08-25 14:17:53 +0000 |
commit | 39ef63326bf5818ee40a1101b499bf101a4f0fa9 (patch) | |
tree | 9117e814b9847bf85db011f0e5d735cc920a87a4 /src/transport/gnunet-service-transport-new.c | |
parent | ff866d1146522c1347c2c7388f39505071caafe2 (diff) | |
download | gnunet-39ef63326bf5818ee40a1101b499bf101a4f0fa9.tar.gz gnunet-39ef63326bf5818ee40a1101b499bf101a4f0fa9.zip |
transport service sends wrong message type to transport_api
transport api requests GNUNET_MESSAGE_TYPE_TRANSPORT_RECV for payload messages
Diffstat (limited to 'src/transport/gnunet-service-transport-new.c')
-rw-r--r-- | src/transport/gnunet-service-transport-new.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/transport/gnunet-service-transport-new.c b/src/transport/gnunet-service-transport-new.c index 95f181835..54af9cade 100644 --- a/src/transport/gnunet-service-transport-new.c +++ b/src/transport/gnunet-service-transport-new.c | |||
@@ -156,7 +156,8 @@ static struct GNUNET_TIME_Relative | |||
156 | plugin_env_receive_callback (void *cls, const struct GNUNET_PeerIdentity *peer, | 156 | plugin_env_receive_callback (void *cls, const struct GNUNET_PeerIdentity *peer, |
157 | const struct GNUNET_MessageHeader *message, | 157 | const struct GNUNET_MessageHeader *message, |
158 | const struct GNUNET_TRANSPORT_ATS_Information *ats, | 158 | const struct GNUNET_TRANSPORT_ATS_Information *ats, |
159 | uint32_t ats_count, struct Session *session, | 159 | uint32_t ats_count, |
160 | struct Session *session, | ||
160 | const char *sender_address, | 161 | const char *sender_address, |
161 | uint16_t sender_address_len) | 162 | uint16_t sender_address_len) |
162 | { | 163 | { |
@@ -222,7 +223,23 @@ plugin_env_receive_callback (void *cls, const struct GNUNET_PeerIdentity *peer, | |||
222 | ntohs (message->size), | 223 | ntohs (message->size), |
223 | &do_forward); | 224 | &do_forward); |
224 | if (do_forward == GNUNET_YES) | 225 | if (do_forward == GNUNET_YES) |
225 | GST_clients_broadcast (message, GNUNET_YES); | 226 | { |
227 | struct InboundMessage * im; | ||
228 | size_t size = | ||
229 | sizeof (struct InboundMessage) + | ||
230 | ntohs (message->size); | ||
231 | |||
232 | im = GNUNET_malloc (size); | ||
233 | im->header.size = htons (size); | ||
234 | im->header.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_RECV); | ||
235 | im->ats_count = htonl (0); | ||
236 | memcpy (&(im->peer), peer, sizeof(struct GNUNET_PeerIdentity)); | ||
237 | memcpy (&im[1], message, ntohs (message->size)); | ||
238 | |||
239 | GST_clients_broadcast ((const struct GNUNET_MessageHeader *) im, GNUNET_YES); | ||
240 | |||
241 | GNUNET_free(im); | ||
242 | } | ||
226 | break; | 243 | break; |
227 | } | 244 | } |
228 | } | 245 | } |