Blame dbrointerruptable.diff
|
Bernhard M. Wiedemann |
1250f9 |
--- ./lib/rpmdb.c.orig 2018-08-08 13:40:18.153941351 +0000
|
|
Bernhard M. Wiedemann |
1250f9 |
+++ ./lib/rpmdb.c 2018-10-16 09:20:11.196708098 +0000
|
|
Bernhard M. Wiedemann |
1250f9 |
@@ -387,9 +387,11 @@ int rpmdbClose(rpmdb db)
|
|
Bernhard M. Wiedemann |
1250f9 |
{
|
|
Bernhard M. Wiedemann |
1250f9 |
rpmdb * prev, next;
|
|
Bernhard M. Wiedemann |
1250f9 |
int rc = 0;
|
|
Bernhard M. Wiedemann |
1250f9 |
+ int dbmode;
|
|
Bernhard M. Wiedemann |
1250f9 |
|
|
Bernhard M. Wiedemann |
1250f9 |
if (db == NULL)
|
|
Bernhard M. Wiedemann |
1250f9 |
goto exit;
|
|
Bernhard M. Wiedemann |
1250f9 |
+ dbmode = db->db_mode;
|
|
Bernhard M. Wiedemann |
1250f9 |
|
|
Bernhard M. Wiedemann |
1250f9 |
prev = &rpmdbRock;
|
|
Bernhard M. Wiedemann |
1250f9 |
while ((next = *prev) != NULL && next != db)
|
|
Bernhard M. Wiedemann |
1250f9 |
@@ -424,7 +426,7 @@ int rpmdbClose(rpmdb db)
|
|
Bernhard M. Wiedemann |
1250f9 |
|
|
Bernhard M. Wiedemann |
1250f9 |
db = _free(db);
|
|
Bernhard M. Wiedemann |
1250f9 |
|
|
Bernhard M. Wiedemann |
1250f9 |
- if (rpmdbRock == NULL) {
|
|
Bernhard M. Wiedemann |
1250f9 |
+ if (rpmdbRock == NULL && (dbmode & (O_RDWR|O_WRONLY)) != 0) {
|
|
Bernhard M. Wiedemann |
1250f9 |
rpmsqActivate(0);
|
|
Bernhard M. Wiedemann |
1250f9 |
}
|
|
Bernhard M. Wiedemann |
1250f9 |
exit:
|
|
Bernhard M. Wiedemann |
1250f9 |
@@ -509,7 +511,7 @@ static int openDatabase(const char * pre
|
|
Bernhard M. Wiedemann |
1250f9 |
rc = rpmioMkpath(rpmdbHome(db), 0755, getuid(), getgid());
|
|
Bernhard M. Wiedemann |
1250f9 |
if (rc == 0) {
|
|
Bernhard M. Wiedemann |
1250f9 |
/* Enable signal queue on the first db open */
|
|
Bernhard M. Wiedemann |
1250f9 |
- if (db->db_next == NULL) {
|
|
Bernhard M. Wiedemann |
1250f9 |
+ if (db->db_next == NULL && (db->db_mode & (O_RDWR|O_WRONLY)) != 0) {
|
|
Bernhard M. Wiedemann |
1250f9 |
rpmsqActivate(1);
|
|
Bernhard M. Wiedemann |
1250f9 |
}
|
|
Bernhard M. Wiedemann |
1250f9 |
|