hipl-core team mailing list archive
-
hipl-core team
-
Mailing list archive
-
Message #00040
[Branch ~hipl-core/hipl/trunk] Rev 4908: Clear ctx->error to 0 prior to processing each socket.
------------------------------------------------------------
revno: 4908
committer: Christof Mroz <christof.mroz@xxxxxxxxxxxxxx>
branch nick: trunk
timestamp: Fri 2010-08-20 16:59:41 +0200
message:
Clear ctx->error to 0 prior to processing each socket.
Maybe that's the wrong place to patch so here's some background info.
I stumbled upon this while testing hipd via two VMs, i.e. running hipd on
both of them and ping6-ing the respective HITs. On some machines it worked
right away but on two setups it didn't because R2 packets were perfectly
received (i.e. HIT-to-IP resolution worked) but not processed. Turns out
ctx->error was set to -1 before any processing even took place, so of
course the packet was dropped at hip_run_handle_functions. As far as I can
tell, even though ctx is bound per-packet it's a stack-allocated struct in
hipd_main that's reused all the time so it must be cleared at one point or
another.
Well anyway, this patch solved my problems so far.
modified:
hipd/hip_socket.c
--
lp:hipl
https://code.launchpad.net/~hipl-core/hipl/trunk
Your team HIPL core team is subscribed to branch lp:hipl.
To unsubscribe from this branch go to https://code.launchpad.net/~hipl-core/hipl/trunk/+edit-subscription
=== modified file 'hipd/hip_socket.c'
--- hipd/hip_socket.c 2010-07-07 16:42:17 +0000
+++ hipd/hip_socket.c 2010-08-20 14:59:41 +0000
@@ -276,6 +276,7 @@
socketfd = ((struct socketfd*) iter->ptr)->fd;
if (FD_ISSET(socketfd, read_fdset)) {
+ ctx->error = 0;
((struct socketfd*) iter->ptr)->func_ptr(ctx);
}
}
Follow ups