* @brief functionality shared by http client and server transport service plugin
* @author Matthias Wachs
*/
-
#include "platform.h"
-#include "gnunet_common.h"
+#include "gnunet_util_lib.h"
#include "gnunet_transport_plugin.h"
#include "plugin_transport_http_common.h"
int port;
};
+
static void
http_clean_splitted (struct SplittedHTTPAddress *spa)
{
- if (NULL != spa)
- {
- GNUNET_free_non_null (spa->protocol);
- GNUNET_free_non_null (spa->host);
- GNUNET_free_non_null (spa->path);
- GNUNET_free_non_null (spa);
- }
+ if (NULL != spa)
+ {
+ GNUNET_free_non_null (spa->protocol);
+ GNUNET_free_non_null (spa->host);
+ GNUNET_free_non_null (spa->path);
+ GNUNET_free_non_null (spa);
+ }
}
struct SplittedHTTPAddress *
const char * addr_str;
char *res;
+ GNUNET_assert (NULL != plugin);
if (NULL == addr)
return NULL;
- if (0 >= addrlen)
- return NULL;
+ if (0 == addrlen)
+ return TRANSPORT_SESSION_INBOUND_STRING;
if (addrlen != http_common_address_get_size (address))
return NULL;
addr_str = (char *) &address[1];
if (addr_str[ntohl(address->urlen) -1] != '\0')
return NULL;
-
GNUNET_asprintf (&res, "%s.%u.%s", plugin, ntohl(address->options), &address[1]);
if (strlen(res) + 1 < 500)
{
address = NULL;
plugin = NULL;
optionstr = NULL;
- options = 0;
if ((NULL == addr) || (addrlen == 0))
{
GNUNET_break (0);
}
optionstr[0] = '\0';
optionstr ++;
- options = atol (optionstr);
+ options = atol (optionstr); /* 0 on conversion error, that's ok */
address = strchr (optionstr, '.');
if (NULL == address)
{
struct sockaddr_storage *s;
(*res) = GNUNET_SYSERR;
char * to_conv;
+ size_t urlen;
ha = (const struct HttpAddress *) addr;
if (NULL == addr)
- {
- GNUNET_break (0);
- return NULL;
- }
+ {
+ GNUNET_break(0);
+ return NULL ;
+ }
if (0 >= addrlen)
- {
- GNUNET_break (0);
- return NULL;
- }
- if (addrlen < sizeof (struct HttpAddress))
- {
- GNUNET_break (0);
- return NULL;
- }
- if (addrlen < sizeof (struct HttpAddress) + ntohl (ha->urlen))
- {
- /* This is a legacy addresses */
- return NULL;
- }
- if (((char *) addr)[addrlen-1] != '\0')
- {
- GNUNET_break (0);
- return NULL;
- }
+ {
+ GNUNET_break(0);
+ return NULL ;
+ }
+ if (addrlen < sizeof(struct HttpAddress))
+ {
+ GNUNET_break(0);
+ return NULL ;
+ }
+ urlen = ntohl (ha->urlen);
+ if (sizeof(struct HttpAddress) + urlen != addrlen)
+ {
+ /* This is a legacy addresses */
+ return NULL ;
+ }
+ if (addrlen < sizeof(struct HttpAddress) + urlen)
+ {
+ /* This is a legacy addresses */
+ return NULL ;
+ }
+ if (((char *) addr)[addrlen - 1] != '\0')
+ {
+ GNUNET_break(0);
+ return NULL ;
+ }
spa = http_split_address ((const char *) &ha[1]);
if (NULL == spa)
{