Index: ../ircu2.10.06/ircd/s_debug.c =================================================================== RCS file: /usr/local/cvsroot/ircu2.10.06/ircd/s_debug.c,v retrieving revision 1.9 retrieving revision 1.10 diff -c -r1.9 -r1.10 *** ../ircu2.10.06/ircd/s_debug.c 1999/10/07 00:52:36 1.9 --- ../ircu2.10.06/ircd/s_debug.c 1999/10/07 19:44:23 1.10 *************** *** 191,197 **** '-', #endif #endif ! 'D','B','1','8', #ifdef DB_ESNET '+', #else --- 191,197 ---- '-', #endif #endif ! 'D','B','1','9', #ifdef DB_ESNET '+', #else Index: ../ircu2.10.06/ircd/s_serv.c =================================================================== RCS file: /usr/local/cvsroot/ircu2.10.06/ircd/s_serv.c,v retrieving revision 1.9 retrieving revision 1.10 diff -c -r1.9 -r1.10 *** ../ircu2.10.06/ircd/s_serv.c 1999/10/07 01:07:17 1.9 --- ../ircu2.10.06/ircd/s_serv.c 1999/10/07 19:44:24 1.10 *************** *** 66,71 **** --- 66,73 ---- struct dbh_reg *tabla_datos [DBH_MAX_TABLA][DBH_HASH_SIZE]; unsigned long tabla_version [DBH_MAX_TABLA]; unsigned long tabla_serie [DBH_MAX_TABLA]; + unsigned long tabla_hash_hi [DBH_MAX_TABLA]; + unsigned long tabla_hash_lo [DBH_MAX_TABLA]; #endif /* DB_ESNET || DB_HISPANO */ *************** *** 1528,1535 **** */ void db_alta(char *registro,char que_bdd) { ! char *p0, *p1, *p2, *p3, *p4; p0=strtok(registro," "); /* serie */ p1=strtok(NULL, " "); /* destino */ p2=strtok(NULL, " "); /* tabla */ --- 1530,1558 ---- */ void db_alta(char *registro,char que_bdd) { ! unsigned long buffer[129*sizeof(unsigned long)]; ! unsigned long *p=buffer; ! unsigned long x[2],v[2],k[2]; ! char *p0, *p1, *p2, *p3, *p4; + /* + ** Calculamos el HASH + */ + memset(buffer,0,sizeof(buffer)); + strncpy((char *)buffer,registro,sizeof(buffer)-1); + while((p0=strchr((char *)buffer,'\r'))) *p0='\0'; + while((p0=strchr((char *)buffer,'\n'))) *p0='\0'; + k[0]=k[1]=0; + x[0]=tabla_hash_hi[que_bdd]; + x[1]=tabla_hash_lo[que_bdd]; + while(*p) { + v[0]=ntohl(*p++); + v[1]=ntohl(*p++); + tea(v,k,x); + } + tabla_hash_hi[que_bdd]=x[0]; + tabla_hash_lo[que_bdd]=x[1]; + p0=strtok(registro," "); /* serie */ p1=strtok(NULL, " "); /* destino */ p2=strtok(NULL, " "); /* tabla */ *************** *** 1540,1546 **** return; /* registro incompleto */ tabla_serie[que_bdd]=atol(p0); ! switch (*p2) { case 'N': --- 1563,1569 ---- return; /* registro incompleto */ tabla_serie[que_bdd]=atol(p0); ! switch (*p2) { case 'N': *************** *** 1572,1577 **** --- 1595,1603 ---- tabla_residente[ESNET_NICKDB]=1; tabla_serie[ESNET_NICKDB]=0; tabla_cuantos[ESNET_NICKDB]=0; + + tabla_hash_hi[ESNET_NICKDB]=0; + tabla_hash_lo[ESNET_NICKDB]=0; if(!(handle=abrir_db(0,buf,ESNET_NICKDB))) return; do { *************** *** 1603,1608 **** --- 1629,1636 ---- ** BUGFIX! */ tabla_serie[que_bdd]=0; + tabla_hash_hi[que_bdd]=0; + tabla_hash_lo[que_bdd]=0; } /* *************** *** 1761,1768 **** */ collapse(parv[1]); if(!match(parv[1],me.name)) { ! sendto_one(sptr,"%s DB %s 0 R %lu-HASH-%s %c", ! NumServ(&me),sptr->name,tabla_serie[que_bdd],parv[4],que_bdd); } sprintf(db_buf,"%s DB %s 0 Q %s %c", --- 1789,1799 ---- */ collapse(parv[1]); if(!match(parv[1],me.name)) { ! inttobase64(db_buf,tabla_hash_hi[que_bdd],6); ! inttobase64(db_buf+6,tabla_hash_lo[que_bdd],6); ! sendto_one(sptr,"%s DB %s 0 R %lu-%s-%s %c", ! NumServ(&me),sptr->name,tabla_serie[que_bdd], ! db_buf,parv[4],que_bdd); } sprintf(db_buf,"%s DB %s 0 Q %s %c", *************** *** 1793,1809 **** if(!es_hub) return 0; if(parc==5) ! sprintf_irc(db_buf,"%s %s %s %s",parv[2],parv[1],parv[3],parv[4]); else ! sprintf_irc(db_buf,"%s %s %s %s %s",parv[2],parv[1],parv[3],parv[4],parv[5]); db_alta(db_buf,que_bdd); if(parc==5) ! sprintf_irc(db_buf,"%s DB %s %s %s %s", NumServ(sptr),parv[1],parv[2],parv[3],parv[4]); else ! sprintf_irc(db_buf,"%s DB %s %s %s %s :%s", NumServ(sptr),parv[1],parv[2],parv[3],parv[4],parv[5]); for (lp = me.serv->down; lp; lp = lp->next) --- 1824,1840 ---- if(!es_hub) return 0; if(parc==5) ! sprintf_irc(db_buf,"%lu %s %s %s",parv[2],parv[1],parv[3],parv[4]); else ! sprintf_irc(db_buf,"%lu %s %s %s %s",parv[2],parv[1],parv[3],parv[4],parv[5]); db_alta(db_buf,que_bdd); if(parc==5) ! sprintf_irc(db_buf,"%s DB %s %lu %s %s", NumServ(sptr),parv[1],parv[2],parv[3],parv[4]); else ! sprintf_irc(db_buf,"%s DB %s %lu %s %s :%s", NumServ(sptr),parv[1],parv[2],parv[3],parv[4],parv[5]); for (lp = me.serv->down; lp; lp = lp->next)