aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-service-transport-new.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2011-08-25 14:17:53 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2011-08-25 14:17:53 +0000
commit39ef63326bf5818ee40a1101b499bf101a4f0fa9 (patch)
tree9117e814b9847bf85db011f0e5d735cc920a87a4 /src/transport/gnunet-service-transport-new.c
parentff866d1146522c1347c2c7388f39505071caafe2 (diff)
downloadgnunet-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.c21
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
156plugin_env_receive_callback (void *cls, const struct GNUNET_PeerIdentity *peer, 156plugin_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 }