diff options
Diffstat (limited to 'src/hello/address.c')
-rw-r--r-- | src/hello/address.c | 40 |
1 files changed, 17 insertions, 23 deletions
diff --git a/src/hello/address.c b/src/hello/address.c index b511ca9df..618aa6e6a 100644 --- a/src/hello/address.c +++ b/src/hello/address.c | |||
@@ -39,21 +39,20 @@ | |||
39 | */ | 39 | */ |
40 | struct GNUNET_HELLO_Address * | 40 | struct GNUNET_HELLO_Address * |
41 | GNUNET_HELLO_address_allocate (const struct GNUNET_PeerIdentity *peer, | 41 | GNUNET_HELLO_address_allocate (const struct GNUNET_PeerIdentity *peer, |
42 | const char *transport_name, | 42 | const char *transport_name, const void *address, |
43 | const void *address, | 43 | size_t address_length) |
44 | size_t address_length) | ||
45 | { | 44 | { |
46 | struct GNUNET_HELLO_Address *addr; | 45 | struct GNUNET_HELLO_Address *addr; |
47 | size_t slen; | 46 | size_t slen; |
48 | char *end; | 47 | char *end; |
49 | 48 | ||
50 | slen = strlen (transport_name) + 1; | 49 | slen = strlen (transport_name) + 1; |
51 | addr = GNUNET_malloc (sizeof (struct GNUNET_HELLO_Address) + | 50 | addr = |
52 | address_length + | 51 | GNUNET_malloc (sizeof (struct GNUNET_HELLO_Address) + address_length + |
53 | slen); | 52 | slen); |
54 | addr->peer = *peer; | 53 | addr->peer = *peer; |
55 | addr->address = &addr[1]; | 54 | addr->address = &addr[1]; |
56 | end = (char*) &addr[1]; | 55 | end = (char *) &addr[1]; |
57 | memcpy (end, address, address_length); | 56 | memcpy (end, address, address_length); |
58 | addr->address_length = address_length; | 57 | addr->address_length = address_length; |
59 | addr->transport_name = &end[address_length]; | 58 | addr->transport_name = &end[address_length]; |
@@ -69,11 +68,10 @@ GNUNET_HELLO_address_allocate (const struct GNUNET_PeerIdentity *peer, | |||
69 | * @return the size | 68 | * @return the size |
70 | */ | 69 | */ |
71 | size_t | 70 | size_t |
72 | GNUNET_HELLO_address_get_size (const struct GNUNET_HELLO_Address *address) | 71 | GNUNET_HELLO_address_get_size (const struct GNUNET_HELLO_Address * address) |
73 | { | 72 | { |
74 | return sizeof (struct GNUNET_HELLO_Address) + | 73 | return sizeof (struct GNUNET_HELLO_Address) + address->address_length + |
75 | address->address_length + | 74 | strlen (address->transport_name) + 1; |
76 | strlen(address->transport_name) + 1; | ||
77 | } | 75 | } |
78 | 76 | ||
79 | 77 | ||
@@ -86,10 +84,9 @@ GNUNET_HELLO_address_get_size (const struct GNUNET_HELLO_Address *address) | |||
86 | struct GNUNET_HELLO_Address * | 84 | struct GNUNET_HELLO_Address * |
87 | GNUNET_HELLO_address_copy (const struct GNUNET_HELLO_Address *address) | 85 | GNUNET_HELLO_address_copy (const struct GNUNET_HELLO_Address *address) |
88 | { | 86 | { |
89 | return GNUNET_HELLO_address_allocate (&address->peer, | 87 | return GNUNET_HELLO_address_allocate (&address->peer, address->transport_name, |
90 | address->transport_name, | 88 | address->address, |
91 | address->address, | 89 | address->address_length); |
92 | address->address_length); | ||
93 | } | 90 | } |
94 | 91 | ||
95 | 92 | ||
@@ -103,21 +100,18 @@ GNUNET_HELLO_address_copy (const struct GNUNET_HELLO_Address *address) | |||
103 | */ | 100 | */ |
104 | int | 101 | int |
105 | GNUNET_HELLO_address_cmp (const struct GNUNET_HELLO_Address *a1, | 102 | GNUNET_HELLO_address_cmp (const struct GNUNET_HELLO_Address *a1, |
106 | const struct GNUNET_HELLO_Address *a2) | 103 | const struct GNUNET_HELLO_Address *a2) |
107 | { | 104 | { |
108 | int ret; | 105 | int ret; |
109 | 106 | ||
110 | ret = strcmp (a1->transport_name, | 107 | ret = strcmp (a1->transport_name, a2->transport_name); |
111 | a2->transport_name); | ||
112 | if (0 != ret) | 108 | if (0 != ret) |
113 | return ret; | 109 | return ret; |
114 | if (a1->address_length < a2->address_length) | 110 | if (a1->address_length < a2->address_length) |
115 | return -1; | 111 | return -1; |
116 | if (a1->address_length > a2->address_length) | 112 | if (a1->address_length > a2->address_length) |
117 | return 1; | 113 | return 1; |
118 | return memcmp (a1->address, | 114 | return memcmp (a1->address, a1->address, a1->address_length); |
119 | a1->address, | ||
120 | a1->address_length); | ||
121 | } | 115 | } |
122 | 116 | ||
123 | 117 | ||