typedef struct _IdentStateData {
hash_link hash; /* must be first */
Comm::ConnectionPointer conn;
+ MemBuf queryMsg; ///< the lookup message sent to IDENT server
IdentClient *clients;
char buf[IDENT_BUFSIZE];
} IdentStateData;
comm_add_close_handler(conn->fd, Ident::Close, state);
- MemBuf mb;
- mb.init();
- mb.Printf("%d, %d\r\n",
- conn->remote.GetPort(),
- conn->local.GetPort());
AsyncCall::Pointer writeCall = commCbCall(5,4, "Ident::WriteFeedback",
CommIoCbPtrFun(Ident::WriteFeedback, state));
- Comm::Write(conn, &mb, writeCall);
+ Comm::Write(conn, &queryMsg, writeCall);
AsyncCall::Pointer readCall = commCbCall(5,4, "Ident::ReadReply",
CommIoCbPtrFun(Ident::ReadReply, state));
comm_read(conn, state->buf, IDENT_BUFSIZE, readCall);
state->conn->local.SetPort(0);
state->conn->remote.SetPort(IDENT_PORT);
+ // build our query from the original connection details
+ state->queryMsg.init();
+ state->queryMsg.printf("%d, %d\r\n", conn->remote.GetPort(), conn->local.GetPort());
+
ClientAdd(state, callback, data);
hash_join(ident_hash, &state->hash);