? patch.db27 ? patch.db28 ? patch.db29 ? patch.db30 Index: ircd/s_debug.c =================================================================== RCS file: /cvsroot/ircd/ircd/s_debug.c,v retrieving revision 1.47 diff -c -r1.47 s_debug.c *** ../ircu2.10.06/ircd/s_debug.c 1999/10/13 15:15:36 1.47 --- ../ircu2.10.06+/ircd/s_debug.c 1999/10/13 15:43:44 *************** *** 191,197 **** '-', #endif #endif ! 'D','B','2','9', #ifdef DB_ESNET '+', #else --- 191,197 ---- '-', #endif #endif ! 'D','B','3','0', #ifdef DB_ESNET '+', #else Index: ircd/s_serv.c =================================================================== RCS file: /cvsroot/ircd/ircd/s_serv.c,v retrieving revision 1.31 diff -c -r1.31 s_serv.c *** ../ircu2.10.06/ircd/s_serv.c 1999/10/13 15:15:36 1.31 --- ../ircu2.10.06+/ircd/s_serv.c 1999/10/13 15:43:44 *************** *** 1767,1778 **** --- 1767,1780 ---- ** BUGFIX! */ tabla_serie[que_bdd]=0; + tabla_cuantos[que_bdd]=0; tabla_hash_hi[que_bdd]=0; tabla_hash_lo[que_bdd]=0; } static void corta_si_multiples_hubs(aClient *cptr,char que_bdd) { + char buf[1024]; Dlink *lp; int num_hubs=0; aClient *acptr; *************** *** 1799,1806 **** if((acptr!=cptr) && find_conf_host(acptr->confs, acptr->name,CONF_HUB)!=NULL) { exit_client(acptr,acptr, ! &me,"BDD inconsistente. Resincronizando..."); goto corta; } } --- 1801,1811 ---- if((acptr!=cptr) && find_conf_host(acptr->confs, acptr->name,CONF_HUB)!=NULL) { + sprintf_irc(buf, + "BDD '%c' inconsistente. Resincronizando...", + que_bdd); exit_client(acptr,acptr, ! &me,buf); goto corta; } } *************** *** 1814,1820 **** * Lee la base de datos de disco * */ ! void initdb(void) { unsigned long hi,lo; char buf[1024]; --- 1819,1825 ---- * Lee la base de datos de disco * */ ! void initdb2(char que_bdd) { unsigned long hi,lo; char buf[1024]; *************** *** 1822,1862 **** int db_file; Dlink *lp; ! 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; ! ! db_file=abrir_db(0,buf,ESNET_NICKDB); if(db_file!=-1) do { /* db_alta modifica la cadena */ ! db_alta(buf,ESNET_NICKDB,0); } while(leer_db(db_file,buf)!=-1); ! dbh_eliminar_borrados(ESNET_NICKDB); /* ** Ahora comprueba que el HASH de la BDD ** cargada se corresponda con el HASH almacenado */ ! lee_hash(ESNET_NICKDB,&hi,&lo); ! if((tabla_hash_hi[ESNET_NICKDB]!=hi) || ! (tabla_hash_lo[ESNET_NICKDB]!=lo)) { sendto_ops("ATENCION - Base de Datos " ! "'%c' aparentemente corrupta. Borrando...",ESNET_NICKDB); ! borrar_db(ESNET_NICKDB); ! sprintf_irc(path,"%s/tabla.%c",DBPATH,ESNET_NICKDB); alarm(3); db_file=open(path,O_TRUNC,S_IRUSR | S_IWUSR); close(db_file); alarm(0); ! corta_si_multiples_hubs(NULL,ESNET_NICKDB); sendto_ops("Solicitando actualizacion BDD '%c' " ! "a los nodos vecinos.",ESNET_NICKDB); /* ** Solo pide a los HUBs, porque no se --- 1827,1866 ---- int db_file; Dlink *lp; ! borrar_db(que_bdd); ! db_file=abrir_db(0,buf,que_bdd); if(db_file!=-1) do { /* db_alta modifica la cadena */ ! if(tabla_residente[que_bdd]) { ! db_alta(buf,que_bdd,0); ! } else { ! actualiza_hash(buf,que_bdd); ! } } while(leer_db(db_file,buf)!=-1); ! dbh_eliminar_borrados(que_bdd); /* ** Ahora comprueba que el HASH de la BDD ** cargada se corresponda con el HASH almacenado */ ! lee_hash(que_bdd,&hi,&lo); ! if((tabla_hash_hi[que_bdd]!=hi) || ! (tabla_hash_lo[que_bdd]!=lo)) { sendto_ops("ATENCION - Base de Datos " ! "'%c' aparentemente corrupta. Borrando...",que_bdd); ! borrar_db(que_bdd); ! sprintf_irc(path,"%s/tabla.%c",DBPATH,que_bdd); alarm(3); db_file=open(path,O_TRUNC,S_IRUSR | S_IWUSR); close(db_file); alarm(0); ! corta_si_multiples_hubs(NULL,que_bdd); sendto_ops("Solicitando actualizacion BDD '%c' " ! "a los nodos vecinos.",que_bdd); /* ** Solo pide a los HUBs, porque no se *************** *** 1867,1877 **** lp->value.cptr->name,CONF_HUB)!=NULL) { sendto_one(lp->value.cptr,"%s DB %s 0 J %lu %c", NumServ(&me),lp->value.cptr->name, ! tabla_serie[ESNET_NICKDB],ESNET_NICKDB); } } } ! almacena_hash(ESNET_NICKDB); } /* --- 1871,1890 ---- lp->value.cptr->name,CONF_HUB)!=NULL) { sendto_one(lp->value.cptr,"%s DB %s 0 J %lu %c", NumServ(&me),lp->value.cptr->name, ! tabla_serie[que_bdd],que_bdd); } } } ! almacena_hash(que_bdd); ! } ! ! void initdb(void) { ! char c; ! ! tabla_residente[ESNET_NICKDB]=1; ! ! for(c=ESNET_BDD;c<=ESNET_BDD_END;c++) ! initdb2(c); } /* *************** *** 1883,1896 **** void reload_db(void) { char buf[16]; sendto_ops("Releyendo Bases de Datos..."); - borrar_db(ESNET_NICKDB); initdb(); ! inttobase64(buf,tabla_hash_hi[ESNET_NICKDB],6); ! inttobase64(buf+6,tabla_hash_lo[ESNET_NICKDB],6); ! sendto_ops("DB: '%c'. Ultimo registro: %lu. HASH: %s", ! ESNET_NICKDB,tabla_serie[ESNET_NICKDB],buf); } --- 1896,1913 ---- void reload_db(void) { char buf[16]; + char c; sendto_ops("Releyendo Bases de Datos..."); initdb(); ! for(c=ESNET_BDD;c<=ESNET_BDD_END;c++) { ! if(tabla_serie[c]) { ! inttobase64(buf,tabla_hash_hi[c],6); ! inttobase64(buf+6,tabla_hash_lo[c],6); ! sendto_ops("DB: '%c'. Ultimo registro: %lu. HASH: %s", ! c,tabla_serie[c],buf); ! } ! } }