X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=server-src%2Fdriver.c;h=e002992b5fda17bf5dd29d2b978c33dda4522df0;hb=96f35b20267e8b1a1c846d476f27fcd330e0b018;hp=d7a6fea7a83d9e10bfca84e25697e55ad18daa22;hpb=2627875b7d18858bc1f9f7652811e4d8c15a23eb;p=debian%2Famanda diff --git a/server-src/driver.c b/server-src/driver.c index d7a6fea..e002992 100644 --- a/server-src/driver.c +++ b/server-src/driver.c @@ -135,7 +135,7 @@ static void startaflush(void); static void start_degraded_mode(disklist_t *queuep); static void start_some_dumps(disklist_t *rq); static void continue_port_dumps(void); -static void update_failed_dump_to_tape(disk_t *); +static void update_failed_dump(disk_t *); typedef enum { TAPE_ACTION_NO_ACTION = 0, @@ -1526,8 +1526,8 @@ handle_taper_result( if(!nodump) { log_add(L_WARNING, _("going into degraded mode because of taper component error.")); - start_degraded_mode(&runq); - } + } + start_degraded_mode(&runq); tapeq.head = tapeq.tail = NULL; taper_busy = 0; if(taper_ev_read != NULL) { @@ -1691,7 +1691,7 @@ dumper_taper_result( sched(dp)->est_kps); amfree(qname); } else { - update_failed_dump_to_tape(dp); + update_failed_dump(dp); } is_partial = dumper->result != DONE || taper_result != DONE; @@ -1767,6 +1767,8 @@ dumper_chunker_result( (long long)sched(dp)->est_csize, sched(dp)->est_kps); amfree(qname); + } else { + update_failed_dump(dp); } deallocate_bandwidth(dp->host->netif, sched(dp)->est_kps); @@ -2626,6 +2628,12 @@ read_schedule( dp->up = (char *) sp; if(dp->host->features == NULL) { dp->host->features = am_string_to_feature(features); + if (!dp->host->features) { + log_add(L_WARNING, + _("Invalid feature string from client '%s'"), + features); + dp->host->features = am_set_default_feature_set(); + } } remove_disk(&waitq, dp); if (dp->to_holdingdisk == HOLD_NEVER) { @@ -3093,13 +3101,9 @@ holdingdisk_state( } static void -update_failed_dump_to_tape( +update_failed_dump( disk_t * dp) { -/* JLM - * should simply set no_bump - */ - time_t save_timestamp = sched(dp)->timestamp; /* setting timestamp to 0 removes the current level from the * database, so that we ensure that it will not be bumped to the