int cluster_finder_factory_container::send(session &s, session *sender, U32 msgid, const char *p, int l) { if (s.writable() >= l) { node::querydata *q; if (msgid != 0 && sender) { //char *ptr = (char *)m_pkt_bkup.write((U8 *)p, l, ret); if ((q = (node::querydata *)s.f()->querymap().create(msgid))) { //((nodequery *)q->data)->p = ptr; //((nodequery *)q->data)->l = ret; q->s = sender; q->msgid = msgid; q->sk = sender->sk(); } else { return NBR_EEXPIRE; } } if (s.send(p, l) < 0) { if (q) { s.f()->querymap().erase(msgid); } return NBR_ESEND; } return l; } return NBR_ESHORT; }