diff options
Diffstat (limited to 'src/rps')
-rw-r--r-- | src/rps/gnunet-rps-profiler.c | 4 | ||||
-rw-r--r-- | src/rps/gnunet-service-rps.c | 67 | ||||
-rw-r--r-- | src/rps/rps-test_util.c | 80 |
3 files changed, 106 insertions, 45 deletions
diff --git a/src/rps/gnunet-rps-profiler.c b/src/rps/gnunet-rps-profiler.c index 16f23e86c..ec73f1803 100644 --- a/src/rps/gnunet-rps-profiler.c +++ b/src/rps/gnunet-rps-profiler.c | |||
@@ -888,6 +888,7 @@ shutdown_op (void *cls) | |||
888 | if (NULL != post_test_task) | 888 | if (NULL != post_test_task) |
889 | { | 889 | { |
890 | GNUNET_SCHEDULER_cancel (post_test_task); | 890 | GNUNET_SCHEDULER_cancel (post_test_task); |
891 | post_test_task = NULL; | ||
891 | } | 892 | } |
892 | if (NULL != churn_task) | 893 | if (NULL != churn_task) |
893 | { | 894 | { |
@@ -899,6 +900,7 @@ shutdown_op (void *cls) | |||
899 | if (NULL != rps_peers[i].rps_handle) | 900 | if (NULL != rps_peers[i].rps_handle) |
900 | { | 901 | { |
901 | GNUNET_RPS_disconnect (rps_peers[i].rps_handle); | 902 | GNUNET_RPS_disconnect (rps_peers[i].rps_handle); |
903 | rps_peers[i].rps_handle = NULL; | ||
902 | } | 904 | } |
903 | if (NULL != rps_peers[i].op) | 905 | if (NULL != rps_peers[i].op) |
904 | { | 906 | { |
@@ -2570,7 +2572,7 @@ test_run (void *cls, | |||
2570 | if (NULL != churn_task) | 2572 | if (NULL != churn_task) |
2571 | GNUNET_SCHEDULER_cancel (churn_task); | 2573 | GNUNET_SCHEDULER_cancel (churn_task); |
2572 | post_test_task = GNUNET_SCHEDULER_add_delayed (timeout, &post_test_op, NULL); | 2574 | post_test_task = GNUNET_SCHEDULER_add_delayed (timeout, &post_test_op, NULL); |
2573 | timeout = GNUNET_TIME_relative_multiply (timeout, 1 + (0.1 * num_peers)); | 2575 | timeout = GNUNET_TIME_relative_multiply (timeout, 1.2 + (0.01 * num_peers)); |
2574 | shutdown_task = GNUNET_SCHEDULER_add_shutdown (shutdown_op, NULL); | 2576 | shutdown_task = GNUNET_SCHEDULER_add_shutdown (shutdown_op, NULL); |
2575 | shutdown_task = GNUNET_SCHEDULER_add_delayed (timeout, &shutdown_op, NULL); | 2577 | shutdown_task = GNUNET_SCHEDULER_add_delayed (timeout, &shutdown_op, NULL); |
2576 | 2578 | ||
diff --git a/src/rps/gnunet-service-rps.c b/src/rps/gnunet-service-rps.c index 84fb33be2..db09c68d2 100644 --- a/src/rps/gnunet-service-rps.c +++ b/src/rps/gnunet-service-rps.c | |||
@@ -1045,12 +1045,10 @@ restore_valid_peers () | |||
1045 | */ | 1045 | */ |
1046 | void | 1046 | void |
1047 | Peers_initialise (char* fn_valid_peers, | 1047 | Peers_initialise (char* fn_valid_peers, |
1048 | struct GNUNET_CADET_Handle *cadet_h, | 1048 | struct GNUNET_CADET_Handle *cadet_h) |
1049 | const struct GNUNET_PeerIdentity *own_id) | ||
1050 | { | 1049 | { |
1051 | filename_valid_peers = GNUNET_strdup (fn_valid_peers); | 1050 | filename_valid_peers = GNUNET_strdup (fn_valid_peers); |
1052 | cadet_handle = cadet_h; | 1051 | cadet_handle = cadet_h; |
1053 | own_identity = *own_id; | ||
1054 | peer_map = GNUNET_CONTAINER_multipeermap_create (4, GNUNET_NO); | 1052 | peer_map = GNUNET_CONTAINER_multipeermap_create (4, GNUNET_NO); |
1055 | valid_peers = GNUNET_CONTAINER_multipeermap_create (4, GNUNET_NO); | 1053 | valid_peers = GNUNET_CONTAINER_multipeermap_create (4, GNUNET_NO); |
1056 | restore_valid_peers (); | 1054 | restore_valid_peers (); |
@@ -1136,14 +1134,12 @@ Peers_get_valid_peers (PeersIterator iterator, | |||
1136 | * @param peer the new #GNUNET_PeerIdentity | 1134 | * @param peer the new #GNUNET_PeerIdentity |
1137 | * | 1135 | * |
1138 | * @return #GNUNET_YES if peer was inserted | 1136 | * @return #GNUNET_YES if peer was inserted |
1139 | * #GNUNET_NO otherwise (if peer was already known or | 1137 | * #GNUNET_NO otherwise |
1140 | * peer was #own_identity) | ||
1141 | */ | 1138 | */ |
1142 | int | 1139 | int |
1143 | Peers_insert_peer (const struct GNUNET_PeerIdentity *peer) | 1140 | Peers_insert_peer (const struct GNUNET_PeerIdentity *peer) |
1144 | { | 1141 | { |
1145 | if ( (GNUNET_YES == Peers_check_peer_known (peer)) || | 1142 | if (GNUNET_YES == Peers_check_peer_known (peer)) |
1146 | (0 == GNUNET_CRYPTO_cmp_peer_identity (peer, &own_identity)) ) | ||
1147 | { | 1143 | { |
1148 | return GNUNET_NO; /* We already know this peer - nothing to do */ | 1144 | return GNUNET_NO; /* We already know this peer - nothing to do */ |
1149 | } | 1145 | } |
@@ -1161,8 +1157,7 @@ Peers_check_peer_flag (const struct GNUNET_PeerIdentity *peer, enum Peers_PeerFl | |||
1161 | * | 1157 | * |
1162 | * @param peer the peer whose liveliness is to be checked | 1158 | * @param peer the peer whose liveliness is to be checked |
1163 | * @return #GNUNET_YES if peer had to be inserted | 1159 | * @return #GNUNET_YES if peer had to be inserted |
1164 | * #GNUNET_NO otherwise (if peer was already known or | 1160 | * #GNUNET_NO otherwise |
1165 | * peer was #own_identity) | ||
1166 | */ | 1161 | */ |
1167 | int | 1162 | int |
1168 | Peers_issue_peer_liveliness_check (const struct GNUNET_PeerIdentity *peer) | 1163 | Peers_issue_peer_liveliness_check (const struct GNUNET_PeerIdentity *peer) |
@@ -1170,10 +1165,6 @@ Peers_issue_peer_liveliness_check (const struct GNUNET_PeerIdentity *peer) | |||
1170 | struct PeerContext *peer_ctx; | 1165 | struct PeerContext *peer_ctx; |
1171 | int ret; | 1166 | int ret; |
1172 | 1167 | ||
1173 | if (0 == GNUNET_CRYPTO_cmp_peer_identity (peer, &own_identity)) | ||
1174 | { | ||
1175 | return GNUNET_NO; | ||
1176 | } | ||
1177 | ret = Peers_insert_peer (peer); | 1168 | ret = Peers_insert_peer (peer); |
1178 | peer_ctx = get_peer_ctx (peer); | 1169 | peer_ctx = get_peer_ctx (peer); |
1179 | if (GNUNET_NO == Peers_check_peer_flag (peer, Peers_ONLINE)) | 1170 | if (GNUNET_NO == Peers_check_peer_flag (peer, Peers_ONLINE)) |
@@ -1666,10 +1657,11 @@ Peers_cleanup_destroyed_channel (void *cls, | |||
1666 | { | 1657 | { |
1667 | struct GNUNET_PeerIdentity *peer = cls; | 1658 | struct GNUNET_PeerIdentity *peer = cls; |
1668 | struct PeerContext *peer_ctx; | 1659 | struct PeerContext *peer_ctx; |
1660 | uint32_t *channel_flag; | ||
1669 | 1661 | ||
1670 | if (GNUNET_NO == Peers_check_peer_known (peer)) | 1662 | if (GNUNET_NO == Peers_check_peer_known (peer)) |
1671 | {/* We don't want to implicitly create a context that we're about to kill */ | 1663 | {/* We don't want to implicitly create a context that we're about to kill */ |
1672 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 1664 | LOG (GNUNET_ERROR_TYPE_WARNING, |
1673 | "channel (%s) without associated context was destroyed\n", | 1665 | "channel (%s) without associated context was destroyed\n", |
1674 | GNUNET_i2s (peer)); | 1666 | GNUNET_i2s (peer)); |
1675 | return; | 1667 | return; |
@@ -1697,12 +1689,16 @@ Peers_cleanup_destroyed_channel (void *cls, | |||
1697 | if (NULL != peer_ctx->send_channel) | 1689 | if (NULL != peer_ctx->send_channel) |
1698 | { | 1690 | { |
1699 | GNUNET_CADET_channel_destroy (peer_ctx->send_channel); | 1691 | GNUNET_CADET_channel_destroy (peer_ctx->send_channel); |
1692 | channel_flag = Peers_get_channel_flag (&peer_ctx->peer_id, Peers_CHANNEL_ROLE_SENDING); | ||
1693 | Peers_set_channel_flag (channel_flag, Peers_CHANNEL_DESTROING); | ||
1700 | peer_ctx->send_channel = NULL; | 1694 | peer_ctx->send_channel = NULL; |
1701 | peer_ctx->mq = NULL; | 1695 | peer_ctx->mq = NULL; |
1702 | } | 1696 | } |
1703 | if (NULL != peer_ctx->recv_channel) | 1697 | if (NULL != peer_ctx->recv_channel) |
1704 | { | 1698 | { |
1705 | GNUNET_CADET_channel_destroy (peer_ctx->recv_channel); | 1699 | GNUNET_CADET_channel_destroy (peer_ctx->recv_channel); |
1700 | channel_flag = Peers_get_channel_flag (&peer_ctx->peer_id, Peers_CHANNEL_ROLE_RECEIVING); | ||
1701 | Peers_set_channel_flag (channel_flag, Peers_CHANNEL_DESTROING); | ||
1706 | peer_ctx->recv_channel = NULL; | 1702 | peer_ctx->recv_channel = NULL; |
1707 | } | 1703 | } |
1708 | /* Set the #Peers_ONLINE flag accordingly */ | 1704 | /* Set the #Peers_ONLINE flag accordingly */ |
@@ -1786,10 +1782,6 @@ Peers_schedule_operation (const struct GNUNET_PeerIdentity *peer, | |||
1786 | struct PeerPendingOp pending_op; | 1782 | struct PeerPendingOp pending_op; |
1787 | struct PeerContext *peer_ctx; | 1783 | struct PeerContext *peer_ctx; |
1788 | 1784 | ||
1789 | if (0 == GNUNET_CRYPTO_cmp_peer_identity (peer, &own_identity)) | ||
1790 | { | ||
1791 | return GNUNET_NO; | ||
1792 | } | ||
1793 | GNUNET_assert (GNUNET_YES == Peers_check_peer_known (peer)); | 1785 | GNUNET_assert (GNUNET_YES == Peers_check_peer_known (peer)); |
1794 | 1786 | ||
1795 | //TODO if LIVE/ONLINE execute immediately | 1787 | //TODO if LIVE/ONLINE execute immediately |
@@ -3368,9 +3360,7 @@ handle_peer_pull_reply (void *cls, | |||
3368 | if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (att_peer_set, | 3360 | if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (att_peer_set, |
3369 | &peers[i]) | 3361 | &peers[i]) |
3370 | && GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (mal_peer_set, | 3362 | && GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (mal_peer_set, |
3371 | &peers[i]) | 3363 | &peers[i])) |
3372 | && 0 != GNUNET_CRYPTO_cmp_peer_identity (&peers[i], | ||
3373 | &own_identity)) | ||
3374 | { | 3364 | { |
3375 | tmp_att_peer = GNUNET_new (struct AttackedPeer); | 3365 | tmp_att_peer = GNUNET_new (struct AttackedPeer); |
3376 | tmp_att_peer->peer_id = peers[i]; | 3366 | tmp_att_peer->peer_id = peers[i]; |
@@ -3382,21 +3372,17 @@ handle_peer_pull_reply (void *cls, | |||
3382 | continue; | 3372 | continue; |
3383 | } | 3373 | } |
3384 | #endif /* ENABLE_MALICIOUS */ | 3374 | #endif /* ENABLE_MALICIOUS */ |
3385 | if (0 != GNUNET_CRYPTO_cmp_peer_identity (&own_identity, | 3375 | /* Make sure we 'know' about this peer */ |
3386 | &peers[i])) | 3376 | (void) Peers_insert_peer (&peers[i]); |
3387 | { | ||
3388 | /* Make sure we 'know' about this peer */ | ||
3389 | (void) Peers_insert_peer (&peers[i]); | ||
3390 | 3377 | ||
3391 | if (GNUNET_YES == Peers_check_peer_valid (&peers[i])) | 3378 | if (GNUNET_YES == Peers_check_peer_valid (&peers[i])) |
3392 | { | 3379 | { |
3393 | CustomPeerMap_put (pull_map, &peers[i]); | 3380 | CustomPeerMap_put (pull_map, &peers[i]); |
3394 | } | 3381 | } |
3395 | else | 3382 | else |
3396 | { | 3383 | { |
3397 | Peers_schedule_operation (&peers[i], insert_in_pull_map); | 3384 | Peers_schedule_operation (&peers[i], insert_in_pull_map); |
3398 | (void) Peers_issue_peer_liveliness_check (&peers[i]); | 3385 | (void) Peers_issue_peer_liveliness_check (&peers[i]); |
3399 | } | ||
3400 | } | 3386 | } |
3401 | } | 3387 | } |
3402 | 3388 | ||
@@ -3831,10 +3817,8 @@ do_round (void *cls) | |||
3831 | for (i = 0; i < a_peers; i++) | 3817 | for (i = 0; i < a_peers; i++) |
3832 | { | 3818 | { |
3833 | peer = view_array[permut[i]]; | 3819 | peer = view_array[permut[i]]; |
3834 | if (0 != GNUNET_CRYPTO_cmp_peer_identity (&own_identity, &peer)) // TODO | 3820 | // FIXME if this fails schedule/loop this for later |
3835 | { // FIXME if this fails schedule/loop this for later | 3821 | send_push (&peer); |
3836 | send_push (&peer); | ||
3837 | } | ||
3838 | } | 3822 | } |
3839 | 3823 | ||
3840 | /* Send PULL requests */ | 3824 | /* Send PULL requests */ |
@@ -3852,8 +3836,7 @@ do_round (void *cls) | |||
3852 | for (i = first_border; i < second_border; i++) | 3836 | for (i = first_border; i < second_border; i++) |
3853 | { | 3837 | { |
3854 | peer = view_array[permut[i]]; | 3838 | peer = view_array[permut[i]]; |
3855 | if (0 != GNUNET_CRYPTO_cmp_peer_identity (&own_identity, &peer) && | 3839 | if ( GNUNET_NO == Peers_check_peer_flag (&peer, Peers_PULL_REPLY_PENDING)) |
3856 | GNUNET_NO == Peers_check_peer_flag (&peer, Peers_PULL_REPLY_PENDING)) // TODO | ||
3857 | { // FIXME if this fails schedule/loop this for later | 3840 | { // FIXME if this fails schedule/loop this for later |
3858 | send_pull_request (&peer); | 3841 | send_pull_request (&peer); |
3859 | } | 3842 | } |
@@ -4367,7 +4350,7 @@ run (void *cls, | |||
4367 | 4350 | ||
4368 | 4351 | ||
4369 | peerinfo_handle = GNUNET_PEERINFO_connect (cfg); | 4352 | peerinfo_handle = GNUNET_PEERINFO_connect (cfg); |
4370 | Peers_initialise (fn_valid_peers, cadet_handle, &own_identity); | 4353 | Peers_initialise (fn_valid_peers, cadet_handle); |
4371 | GNUNET_free (fn_valid_peers); | 4354 | GNUNET_free (fn_valid_peers); |
4372 | 4355 | ||
4373 | /* Initialise sampler */ | 4356 | /* Initialise sampler */ |
diff --git a/src/rps/rps-test_util.c b/src/rps/rps-test_util.c index d47e4952f..08fe96097 100644 --- a/src/rps/rps-test_util.c +++ b/src/rps/rps-test_util.c | |||
@@ -31,6 +31,17 @@ | |||
31 | 31 | ||
32 | #define LOG(kind, ...) GNUNET_log_from(kind,"rps-test_util",__VA_ARGS__) | 32 | #define LOG(kind, ...) GNUNET_log_from(kind,"rps-test_util",__VA_ARGS__) |
33 | 33 | ||
34 | #define B2B_PAT "%c%c%c%c%c%c%c%c" | ||
35 | #define B2B(byte) \ | ||
36 | (byte & 0x80 ? '1' : '0'), \ | ||
37 | (byte & 0x40 ? '1' : '0'), \ | ||
38 | (byte & 0x20 ? '1' : '0'), \ | ||
39 | (byte & 0x10 ? '1' : '0'), \ | ||
40 | (byte & 0x08 ? '1' : '0'), \ | ||
41 | (byte & 0x04 ? '1' : '0'), \ | ||
42 | (byte & 0x02 ? '1' : '0'), \ | ||
43 | (byte & 0x01 ? '1' : '0') | ||
44 | |||
34 | #ifndef TO_FILE | 45 | #ifndef TO_FILE |
35 | #define TO_FILE | 46 | #define TO_FILE |
36 | #endif /* TO_FILE */ | 47 | #endif /* TO_FILE */ |
@@ -155,6 +166,9 @@ to_file_raw (const char *file_name, const char *buf, size_t size_buf) | |||
155 | 166 | ||
156 | return; | 167 | return; |
157 | } | 168 | } |
169 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
170 | "Wrote %u bytes raw.\n", | ||
171 | size_written); | ||
158 | if (GNUNET_YES != GNUNET_DISK_file_close (f)) | 172 | if (GNUNET_YES != GNUNET_DISK_file_close (f)) |
159 | LOG (GNUNET_ERROR_TYPE_WARNING, | 173 | LOG (GNUNET_ERROR_TYPE_WARNING, |
160 | "Unable to close file\n"); | 174 | "Unable to close file\n"); |
@@ -180,6 +194,8 @@ to_file_raw_unaligned (const char *file_name, | |||
180 | // num_bits_buf_unaligned = bits_needed % 8; | 194 | // num_bits_buf_unaligned = bits_needed % 8; |
181 | // return; | 195 | // return; |
182 | //} | 196 | //} |
197 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
198 | "Was asked to write %u bits\n", bits_needed); | ||
183 | 199 | ||
184 | char buf_write[size_buf + 1]; | 200 | char buf_write[size_buf + 1]; |
185 | const unsigned bytes_iter = (0 != bits_needed % 8? | 201 | const unsigned bytes_iter = (0 != bits_needed % 8? |
@@ -187,6 +203,14 @@ to_file_raw_unaligned (const char *file_name, | |||
187 | bits_needed/8); | 203 | bits_needed/8); |
188 | // TODO what if no iteration happens? | 204 | // TODO what if no iteration happens? |
189 | unsigned size_buf_write = 0; | 205 | unsigned size_buf_write = 0; |
206 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
207 | "num_bits_buf_unaligned: %u\n", | ||
208 | num_bits_buf_unaligned); | ||
209 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
210 | "ua args: size_buf: %u, bits_needed: %u -> iter: %u\n", | ||
211 | size_buf, | ||
212 | bits_needed, | ||
213 | bytes_iter); | ||
190 | buf_write[0] = buf_unaligned; | 214 | buf_write[0] = buf_unaligned; |
191 | /* Iterate over input bytes */ | 215 | /* Iterate over input bytes */ |
192 | for (unsigned i = 0; i < bytes_iter; i++) | 216 | for (unsigned i = 0; i < bytes_iter; i++) |
@@ -227,17 +251,57 @@ to_file_raw_unaligned (const char *file_name, | |||
227 | { | 251 | { |
228 | num_bits_needed_iter = 8; | 252 | num_bits_needed_iter = 8; |
229 | } | 253 | } |
254 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
255 | "number of bits needed in this iteration: %u\n", | ||
256 | num_bits_needed_iter); | ||
230 | mask_bits_needed_iter = ((char) 1 << num_bits_needed_iter) - 1; | 257 | mask_bits_needed_iter = ((char) 1 << num_bits_needed_iter) - 1; |
258 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
259 | "mask needed bits (current iter): "B2B_PAT"\n", | ||
260 | B2B(mask_bits_needed_iter)); | ||
261 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
262 | "Unaligned byte: "B2B_PAT" (%u bits)\n", | ||
263 | B2B(buf_unaligned), | ||
264 | num_bits_buf_unaligned); | ||
231 | byte_input = buf[i]; | 265 | byte_input = buf[i]; |
266 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
267 | "next whole input byte: "B2B_PAT"\n", | ||
268 | B2B(byte_input)); | ||
232 | byte_input &= mask_bits_needed_iter; | 269 | byte_input &= mask_bits_needed_iter; |
233 | num_bits_to_align = 8 - num_bits_buf_unaligned; | 270 | num_bits_to_align = 8 - num_bits_buf_unaligned; |
271 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
272 | "input byte, needed bits: "B2B_PAT"\n", | ||
273 | B2B(byte_input)); | ||
274 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
275 | "number of bits needed to align unaligned bit: %u\n", | ||
276 | num_bits_to_align); | ||
234 | num_bits_to_move = min (num_bits_to_align, num_bits_needed_iter); | 277 | num_bits_to_move = min (num_bits_to_align, num_bits_needed_iter); |
278 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
279 | "number of bits of new byte to move: %u\n", | ||
280 | num_bits_to_move); | ||
235 | mask_input_to_move = ((char) 1 << num_bits_to_move) - 1; | 281 | mask_input_to_move = ((char) 1 << num_bits_to_move) - 1; |
282 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
283 | "mask of bits of new byte to take for moving: "B2B_PAT"\n", | ||
284 | B2B(mask_input_to_move)); | ||
236 | bits_to_move = byte_input & mask_input_to_move; | 285 | bits_to_move = byte_input & mask_input_to_move; |
286 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
287 | "masked bits of new byte to take for moving: "B2B_PAT"\n", | ||
288 | B2B(bits_to_move)); | ||
237 | distance_shift_bits = num_bits_buf_unaligned; | 289 | distance_shift_bits = num_bits_buf_unaligned; |
290 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
291 | "distance needed to shift bits to their correct spot: %u\n", | ||
292 | distance_shift_bits); | ||
238 | bits_moving = bits_to_move << distance_shift_bits; | 293 | bits_moving = bits_to_move << distance_shift_bits; |
294 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
295 | "shifted, masked bits of new byte being moved: "B2B_PAT"\n", | ||
296 | B2B(bits_moving)); | ||
239 | byte_to_fill = buf_unaligned | bits_moving; | 297 | byte_to_fill = buf_unaligned | bits_moving; |
240 | if (num_bits_buf_unaligned + num_bits_needed_iter > 8) | 298 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
299 | "byte being filled: "B2B_PAT"\n", | ||
300 | B2B(byte_to_fill)); | ||
301 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
302 | "pending bytes: %u\n", | ||
303 | num_bits_buf_unaligned + num_bits_needed_iter); | ||
304 | if (num_bits_buf_unaligned + num_bits_needed_iter >= 8) | ||
241 | { | 305 | { |
242 | /* buf_unaligned was aligned by filling | 306 | /* buf_unaligned was aligned by filling |
243 | * -> can be written to storage */ | 307 | * -> can be written to storage */ |
@@ -246,10 +310,22 @@ to_file_raw_unaligned (const char *file_name, | |||
246 | 310 | ||
247 | /* store the leftover, unaligned bits in buffer */ | 311 | /* store the leftover, unaligned bits in buffer */ |
248 | mask_input_leftover = mask_bits_needed_iter & (~ mask_input_to_move); | 312 | mask_input_leftover = mask_bits_needed_iter & (~ mask_input_to_move); |
313 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
314 | "mask of leftover bits of new byte: "B2B_PAT"\n", | ||
315 | B2B(mask_input_leftover)); | ||
249 | byte_input_leftover = byte_input & mask_input_leftover; | 316 | byte_input_leftover = byte_input & mask_input_leftover; |
317 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
318 | "masked, leftover bits of new byte: "B2B_PAT"\n", | ||
319 | B2B(byte_input_leftover)); | ||
250 | num_bits_leftover = num_bits_needed_iter - num_bits_to_move; | 320 | num_bits_leftover = num_bits_needed_iter - num_bits_to_move; |
251 | num_bits_discard = 8 - num_bits_needed_iter; | 321 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
322 | "number of unaligned bits left: %u\n", | ||
323 | num_bits_leftover); | ||
324 | //num_bits_discard = 8 - num_bits_needed_iter; | ||
252 | byte_unaligned_new = byte_input_leftover >> num_bits_to_move; | 325 | byte_unaligned_new = byte_input_leftover >> num_bits_to_move; |
326 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
327 | "new unaligned byte: "B2B_PAT"\n", | ||
328 | B2B(byte_unaligned_new)); | ||
253 | buf_unaligned = byte_unaligned_new; | 329 | buf_unaligned = byte_unaligned_new; |
254 | num_bits_buf_unaligned = num_bits_leftover % 8; | 330 | num_bits_buf_unaligned = num_bits_leftover % 8; |
255 | } | 331 | } |