From 41afc5e2c243f7b2f83664f9a5a6fb8ff53e21fc Mon Sep 17 00:00:00 2001 From: Nathan Bryant Date: Sun, 10 Feb 2002 22:36:41 +0000 Subject: [PATCH] - replace cdb_trunc with a complete version of the code i had been working on; fallback code for db < 3.3.x needed - change 'can't connect to host.port' to 'can't connect to host:port' --- citadel/ChangeLog | 6 ++- citadel/clientsocket.c | 2 +- citadel/database_sleepycat.c | 72 ++++++++++++++++++++++++++---------- citadel/ipc_c_tcp.c | 2 +- 4 files changed, 59 insertions(+), 23 deletions(-) diff --git a/citadel/ChangeLog b/citadel/ChangeLog index 477748581..9ec5cf61e 100644 --- a/citadel/ChangeLog +++ b/citadel/ChangeLog @@ -1,4 +1,9 @@ $Log$ + Revision 590.107 2002/02/10 22:36:41 nbryant + - replace cdb_trunc with a complete version of the code i had been + working on; fallback code for db < 3.3.x needed + - change 'can't connect to host.port' to 'can't connect to host:port' + Revision 590.106 2002/02/08 22:39:08 ajc * If there's already a Subject line in memory, display it below the usual headers when the user hits @@ -3318,4 +3323,3 @@ Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant Fri Jul 10 1998 Art Cancro * Initial CVS import - diff --git a/citadel/clientsocket.c b/citadel/clientsocket.c index b1ad7f05e..0c6d401c2 100644 --- a/citadel/clientsocket.c +++ b/citadel/clientsocket.c @@ -85,7 +85,7 @@ int sock_connect(char *host, char *service, char *protocol) } if (connect(s, (struct sockaddr *) &sin, sizeof(sin)) < 0) { - lprintf(3, "can't connect to %s.%s: %s\n", + lprintf(3, "can't connect to %s:%s: %s\n", host, service, strerror(errno)); return(-1); } diff --git a/citadel/database_sleepycat.c b/citadel/database_sleepycat.c index 9f84a427a..2cca9a37e 100644 --- a/citadel/database_sleepycat.c +++ b/citadel/database_sleepycat.c @@ -665,26 +665,6 @@ struct cdbdata *cdb_next_item(int cdb) -/* - * Truncate (delete every record) - */ -void cdb_trunc(int cdb) { - int ret = 0; - u_int32_t records_deleted; - - cdb_begin_transaction(); - - lprintf(9, "truncate\n"); - ret = dbp[cdb]->truncate(dbp[cdb], MYTID, &records_deleted, 0); - if (ret) { - lprintf(1, "cdb_trunc: db_truncate: %s\n", db_strerror(ret)); - abort(); - } - - cdb_end_transaction(); -} - - /* * Transaction-based stuff. I'm writing this as I bake cookies... */ @@ -723,3 +703,55 @@ void cdb_end_transaction(void) { MYTID = NULL; } +/* + * Truncate (delete every record) + */ +void cdb_trunc(int cdb) +{ + DB_TXN *tid; + int ret; + u_int32_t count; + + if (MYTID != NULL) + { + ret = dbp[cdb]->truncate(dbp[cdb], /* db */ + MYTID, /* transaction ID */ + &count, /* #rows that were deleted */ + 0); /* flags */ + if (ret) + { + lprintf(1, "cdb_truncate(%d): %s\n", cdb, + db_strerror(ret)); + abort(); + } + } + else + { + bailIfCursor(MYCURSORS, "attempt to write during r/o cursor"); + + retry: + txbegin(&tid); + + if ((ret = dbp[cdb]->truncate(dbp[cdb], /* db */ + tid, /* transaction ID */ + &count, /* #rows deleted */ + 0))) /* flags */ + { + if (ret == DB_LOCK_DEADLOCK) + { + txabort(tid); + goto retry; + } + else + { + lprintf(1, "cdb_truncate(%d): %s\n", cdb, + db_strerror(ret)); + abort(); + } + } + else + { + txcommit(tid); + } + } +} diff --git a/citadel/ipc_c_tcp.c b/citadel/ipc_c_tcp.c index aba311f88..f646a66f4 100644 --- a/citadel/ipc_c_tcp.c +++ b/citadel/ipc_c_tcp.c @@ -134,7 +134,7 @@ static int connectsock(char *host, char *service, char *protocol, int defaultPor alarm(30); if (connect(s, (struct sockaddr *) &sin, sizeof(sin)) < 0) { - err_printf("can't connect to %s.%s: %s\n", + err_printf("can't connect to %s:%s: %s\n", host, service, strerror(errno)); logoff(3); } -- 2.39.2