- send_error_to_client = GNUNET_YES;
- struct GNUNET_MessageHeader * gn_msg = NULL;
- /*check message and forward here */
- /* checking size */
-
- if (cs->pending_inbound_msg->pos >= sizeof (struct GNUNET_MessageHeader))
- {
-
- gn_msg = GNUNET_malloc (cs->pending_inbound_msg->pos);
- memcpy (gn_msg,cs->pending_inbound_msg->buf,cs->pending_inbound_msg->pos);
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"msg->size: %u \n",ntohs (gn_msg->size));
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"msg->type: %u \n",ntohs (gn_msg->type));
-
- //MY VERSION: if ((ntohs(gn_msg->size) == cs->pending_inbound_msg->pos))
- if ((ntohs(gn_msg->size) <= cs->pending_inbound_msg->pos))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Recieved GNUnet message type %u size %u and payload %u \n",ntohs (gn_msg->type), ntohs (gn_msg->size), ntohs (gn_msg->size)-sizeof(struct GNUNET_MessageHeader));
- /* forwarding message to transport */
-
- char * tmp = NULL;
- if ( AF_INET == cs->addr_inbound->sin_family)
- {
- tmp = GNUNET_malloc (INET_ADDRSTRLEN + 14);
- inet_ntop(AF_INET, &(cs->addr_inbound)->sin_addr,address,INET_ADDRSTRLEN);
- GNUNET_asprintf(&tmp,"%s:%u",address,ntohs(cs->addr_inbound->sin_port));
- }
- /* Incoming IPv6 connection */
- if ( AF_INET6 == cs->addr_inbound->sin_family)
- {
- tmp = GNUNET_malloc (INET6_ADDRSTRLEN + 14);
- inet_ntop(AF_INET6, &((struct sockaddr_in6 *) cs->addr_inbound)->sin6_addr,address,INET6_ADDRSTRLEN);
- GNUNET_asprintf(&tmp,"[%s]:%u",address,ntohs(cs->addr_inbound->sin_port));
-
- }
- if (NULL != tmp)
- {
- plugin->env->receive(plugin->env, &(cs->sender), gn_msg, 1, cs , tmp, strlen(tmp));
- GNUNET_free_non_null(tmp);
- }
- send_error_to_client = GNUNET_NO;
- }
- }
-
- if (send_error_to_client == GNUNET_NO)
- {
- response = MHD_create_response_from_data (strlen (HTTP_PUT_RESPONSE),HTTP_PUT_RESPONSE, MHD_NO, MHD_NO);
- res = MHD_queue_response (session, MHD_HTTP_OK, response);
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Sent HTTP/1.1: 200 OK as PUT Response\n",HTTP_PUT_RESPONSE, strlen (HTTP_PUT_RESPONSE), res );
- MHD_destroy_response (response);
- }
- else
- {
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Recieved malformed message with %u bytes\n", cs->pending_inbound_msg->pos);
- response = MHD_create_response_from_data (strlen (HTTP_PUT_RESPONSE),HTTP_PUT_RESPONSE, MHD_NO, MHD_NO);
- res = MHD_queue_response (session, MHD_HTTP_BAD_REQUEST, response);
- MHD_destroy_response (response);
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Sent HTTP/1.1: 400 BAD REQUEST as PUT Response\n");
- }
-
- GNUNET_free_non_null (gn_msg);
- cs->is_put_in_progress = GNUNET_NO;
- cs->is_bad_request = GNUNET_NO;
- cs->pending_inbound_msg->pos = 0;
- return res;