1.3.5-3 + new scanner

git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3510 2a923420-c742-0410-a762-8d5b09965624
This commit is contained in:
hummypkg 2017-01-10 19:57:33 +00:00
parent caeabd15d0
commit 92a5c27401
21 changed files with 257 additions and 207 deletions

View File

@ -1,10 +1,10 @@
Package: webif
Priority: optional
Section: web
Version: 1.3.5-2
Version: 1.3.5-3
Architecture: mipsel
Maintainer: af123@hpkg.tv
Depends: tcpfix,webif-channelicons(>=1.1.24),lighttpd(>=1.4.39-1),jim(>=0.77),jim-oo(>=0.77),jim-sqlite3(>=0.76),jim-cgi(>=0.7-1),jim-binary(>=0.76),service-control(>=2.3),busybox(>=1.20.2-1),lsof(>=4.87),epg(>=1.2.5),hmt(>=2.0.10),ssmtp,cron-daemon(>=1.18.3-3),at(>=3.1.18),anacron,trm(>=1.1),openssl-command,nicesplice,id3v2,file,rsvsync(>=1.1.9),webif-charts(>=1.2-1),stripts(>=1.2.5-3),tmenu(>=1.21-1),ffmpeg,id3v2,multienv(>=1.6),tcpping(>=1.1),e2fsprogs,wireless-tools(>=29-1),dbupdate,recmon(>=2.0.7),hwctl,nugget(>=0.95),sqlite3(>=3.15.1)
Depends: tcpfix,webif-channelicons(>=1.1.24),lighttpd(>=1.4.39-1),jim(>=0.77),jim-oo(>=0.77),jim-sqlite3(>=0.76),jim-cgi(>=0.7-1),jim-binary(>=0.76),service-control(>=2.3),busybox(>=1.20.2-1),lsof(>=4.87),epg(>=1.2.5),hmt(>=2.0.10),ssmtp,cron-daemon(>=1.18.3-3),at(>=3.1.18),anacron,trm(>=1.1),openssl-command,nicesplice,id3v2,file,rsvsync(>=1.1.9),webif-charts(>=1.2-1),stripts(>=1.2.5-3),tmenu(>=1.21-2),ffmpeg,id3v2,multienv(>=1.6),tcpping(>=1.1),e2fsprogs,wireless-tools(>=29-1),dbupdate,recmon(>=2.0.7),hwctl,nugget(>=0.95),sqlite3(>=3.15.1)
Suggests:
Description: An evolving web interface for the Humax.
Tags: http://hummy.tv/forum/threads/7619/

View File

@ -28,15 +28,16 @@ foreach file [cgi_get files] {
if {$ts eq "0"} continue
if {$act eq "mp2"} {
set q [queue insert $ts mp3]
set q [queue insert -hold $ts mp3]
} else {
set q [queue insert $ts $act]
set q [queue insert -hold $ts $act]
}
switch -- $act {
mp2 { $q set args "-mp2" }
mp3 { $q set args "-mp3" }
}
$q submit
puts "</li>"
}
puts "</ul>"

View File

@ -403,6 +403,7 @@ function flagdir(file, flag, iconset, output, options)
.empty()
.html('<img src=/img/loading.gif> Updating...')
.load('/browse/iconset.jim', { file: file });
flag = flag.toLowerCase();
if ($(options).attr(flag) == '1')
$(options).attr(flag, 0);
else
@ -682,7 +683,7 @@ var dmenuclick = function(action, el, pos)
break;
case 'shrinkr':
flagdir(file, 'autoshrinkr', iconset, results, el);
flagdir(file, 'autoshrinkR', iconset, results, el);
break;
case 'decrypt':
@ -690,7 +691,7 @@ var dmenuclick = function(action, el, pos)
break;
case 'decryptr':
flagdir(file, 'autodecryptr', iconset, results, el);
flagdir(file, 'autodecryptR', iconset, results, el);
break;
case 'resetnew':

View File

@ -24,6 +24,12 @@ foreach q [queue all] {
} [$q get file]]
set submitted [clock format [$q get submitted] \
-format {%d/%m/%Y %H:%M:%S}]
if {[$q get last] ne "0"} {
set last [clock format [$q get last] \
-format {%d/%m/%Y %H:%M:%S}]
} else {
set last ""
}
set start [$q get start]
if {$start ne "0"} { set start $($start - [clock seconds]) }
@ -32,6 +38,7 @@ foreach q [queue all] {
puts "{"
puts " \"qid\": [$q get id],"
puts " \"submitted\": \"$submitted\","
puts " \"last\": \"$last\","
puts " \"file\": \"[::json::escape $name]\","
puts " \"action\": \"[::json::escape [$q get action]]\","
puts " \"args\": \"[::json::escape [$q get args]]\","

View File

@ -33,8 +33,9 @@ There are no tasks in the queue.
<th>File</th>
<th>Action</th>
<th>Status</th>
<th>Time</th>
<th>Runtime</th>
<th>Log</th>
<th>Last Update</th>
</tr>
</thead>
<tbody>

View File

@ -38,6 +38,7 @@ function load()
s += v.runtime;
s += '</td>' +
'<td>' + v.log + '</td>' +
'<td>' + v.last + '</td>' +
'</tr>';
$('#queuetab > tbody').append(s);

View File

@ -33,10 +33,10 @@ if {[llength $errfields]} {
set r [rsv manual $start $end $lcn $type $repeat $title]
} msg]} {
puts "\"status\": 0,"
puts "\"err\": \"$msg\""
puts "\"err\": \"c: $msg\""
} elseif {[catch {$r insert} msg]} {
puts "\"status\": 0,"
puts "\"err\": \"$msg\""
puts "\"err\": \"i: $msg\""
} else {
puts "\"status\": 1"
system restartpending

View File

@ -40,6 +40,14 @@ Plugins register themselves with:
If not specified, priority defaults to 500.
Plugins should use directory flags of the form .auto<flag>[R] with the
optional trailing R indicating recursion. If they use filesystem flags
that don't conform to this scheme then they should register them with:
::auto::register_flag <module> <flag>
(e.g. ::auto::register_flag sweeper sweeper)
The framework will call the following callbacks (if defined within the module):
::module::init
@ -86,7 +94,7 @@ The following functions are available for modules to use:
Check if a recording is in use (with retries).
::auto::autoflagscan <root> <flag> <callback>
::auto::flagscan <root> <flag> <callback>
Starting at the directory indicated by <root>, all directories are
recursively scanned looking for those containing a file named
@ -102,18 +110,6 @@ The following functions are available for modules to use:
If the callback returns the string "STOP" then the directory
scan stops.
::auto::flagscan <root> <fiag> <callback>
Starting at the directory indicated by <root>, all directories are
recursively scanned looking for those containing a file named
".<flag>".
The callback will be called once for each flagged directory with
the directory name passed as the sole argument.
If the callback returns the string "STOP" then the directory
scan stops.
::auto::direntries <directory> <callback>
Scan the named directory and call the callback for each loadable

View File

@ -15,7 +15,7 @@ set ::auto::force 0
while {[llength $argv]} {
switch -- [lindex $argv 0] {
-d {
set ::auto::loglevel 2
incr ::auto::loglevel
set ::auto::logfd stdout
}
-f {
@ -151,9 +151,12 @@ proc ::auto::pending {} {
}] [queue pending]]
}
set ::auto::processed 0
for {set qq [::auto::pending]} {[llength $qq]} {set qq [::auto::pending]} {
::auto::dumpq $qq
incr ::auto::processed
# Try to run the first item in the queue.
set q [lindex $qq 0]
set plugin [$q get action]
@ -169,7 +172,7 @@ for {set qq [::auto::pending]} {[llength $qq]} {set qq [::auto::pending]} {
::auto::dsc
::auto::oktorun
$q update RUNNING "Started at [::auto::date]"
$q update RUNNING "Started"
set ologprefix $::auto::logprefix
set ::auto::logprefix "$plugin:$::auto::logprefix"
@ -184,11 +187,11 @@ for {set qq [::auto::pending]} {[llength $qq]} {set qq [::auto::pending]} {
::auto::log " $code - $msg - $next" 0
switch -- $code {
"-1" {
::auto::log " Plugin failure." 0
::auto::log " Plugin failure" 0
$q update "FAILED" "Plugin failure" 1
}
"OK" {
$q update "COMPLETE" "$msg ([::auto::date])" 1 $elapsed
$q update "COMPLETE" $msg 1 $elapsed
::auto::runplugins dequeued $plugin $q $ts
}
"DEFER" {
@ -197,7 +200,7 @@ for {set qq [::auto::pending]} {[llength $qq]} {set qq [::auto::pending]} {
}
"FAILED" { $q update "FAILED" $msg 1 $elapsed }
default {
$q update "FAILED" "Unknown response '$code' from plugin"
$q update "FAILED" "Unknown response '$code'"
}
}
}
@ -207,5 +210,10 @@ for {set qq [::auto::pending]} {[llength $qq]} {set qq [::auto::pending]} {
release_lock webif_autodeq
::auto::log "Auto de-queue completed in [::auto::elapsed $scanstart] seconds."
if {$::auto::processed || $::auto::loglevel > 1} {
set q "s"
if {$::auto::processed == 1} { set q "" }
::auto::log "Auto de-queue processed $::auto::processed item$q in [\
::auto::elapsed $scanstart] seconds."
}

View File

@ -32,21 +32,15 @@ proc ::decrypt::ts {ts} {
}
proc ::decrypt::directory {dir} {
::auto::log "DECRYPT: \[$dir]" 2
::auto::direntries $dir ::decrypt::ts
}
proc ::decrypt::rundir {dir} {
set sup [::auto::autoflagscanup $dir decrypt]
if {$sup == -1} {
log "Encountered special directory." 2
return
}
::auto::autoflagscan $dir decrypt ::decrypt::directory 0 $sup
::auto::flagscan $dir decrypt ::decrypt::directory 0
}
proc ::decrypt::run {} {
::auto::autoflagscan $::auto::root decrypt ::decrypt::directory
::auto::flagscan $::auto::root decrypt ::decrypt::directory
}
::auto::register decrypt 600

View File

@ -2,7 +2,6 @@
proc ::dedup::directory {dir} {
namespace import ::auto::log
log "DEDUP: \[$dir]" 2
loop i 0 1 {
foreach line [split \
[exec /mod/webif/html/dedup/dedup -yes -auto $dir] "\n"] {
@ -13,16 +12,11 @@ proc ::dedup::directory {dir} {
}
proc ::dedup::rundir {dir} {
set sup [::auto::autoflagscanup $dir dedup]
if {$sup == -1} {
log "Encountered special directory." 2
return
}
::auto::autoflagscan $dir dedup ::dedup::directory 0 $sup
::auto::flagscan $dir dedup ::dedup::directory 0
}
proc ::dedup::run {} {
::auto::autoflagscan $::auto::root dedup ::dedup::directory
::auto::flagscan $::auto::root dedup ::dedup::directory
}
::auto::register dedup 800

View File

@ -2,8 +2,6 @@
proc ::expire::directory {dir} {
namespace import ::auto::log
log "EXPIRE: \[$dir]" 2
# type 0 keep {} days 2 keepnew 0
set ax [dir expiry $dir]
log " $ax" 2
@ -74,16 +72,11 @@ proc ::expire::directory {dir} {
}
proc ::expire::rundir {dir} {
set sup [::auto::autoflagscanup $dir expire]
if {$sup == -1} {
log "Encountered special directory." 2
return
}
::auto::autoflagscan $dir expire ::expire::directory 0 $sup
::auto::flagscan $dir expire ::expire::directory 0
}
proc ::expire::run {} {
::auto::autoflagscan $::auto::root expire ::expire::directory
::auto::flagscan $::auto::root expire ::expire::directory
}
::auto::register expire 900

View File

@ -24,27 +24,20 @@ proc ::mp3::ts {ts} {
}
# Enqueue file
set q [queue insert $ts mp3]
#$q set args "-mp2"
queue insert $ts mp3
::auto::log " $file - Queued for mp3." 0
}
proc ::mp3::directory {dir} {
::auto::log "MP3: \[$dir]" 2
::auto::direntries $dir ::mp3::ts
}
proc ::mp3::rundir {dir} {
set sup [::auto::autoflagscanup $dir mp3]
if {$sup == -1} {
log "Encountered special directory." 2
return
}
::auto::autoflagscan $dir mp3 ::mp3::directory 0 $sup
::auto::flagscan $dir mp3 ::mp3::directory 0
}
proc ::mp3::run {} {
::auto::autoflagscan $::auto::root mp3 ::mp3::directory
::auto::flagscan $::auto::root mp3 ::mp3::directory
}
::auto::register mp3 300

View File

@ -29,21 +29,15 @@ proc ::mpg::ts {ts} {
}
proc ::mpg::directory {dir} {
::auto::log "MPG: \[$dir]" 2
::auto::direntries $dir ::mpg::ts
}
proc ::mpg::rundir {dir} {
set sup [::auto::autoflagscanup $dir mpg]
if {$sup == -1} {
log "Encountered special directory." 2
return
}
::auto::autoflagscan $dir mpg ::mpg::directory 0 $sup
::auto::flagscan $dir mpg ::mpg::directory 0
}
proc ::mpg::run {} {
::auto::autoflagscan $::auto::root mpg ::mpg::directory
::auto::flagscan $::auto::root mpg ::mpg::directory
}
::auto::register mpg 300

View File

@ -41,21 +41,15 @@ proc ::shrink::ts {ts} {
}
proc ::shrink::directory {dir} {
::auto::log "SHRINK: \[$dir]" 2
::auto::direntries $dir ::shrink::ts
}
proc ::shrink::rundir {dir} {
set sup [::auto::autoflagscanup $dir shrink]
if {$sup == -1} {
log "Encountered special directory." 2
return
}
::auto::autoflagscan $dir shrink ::shrink::directory 0 $sup
::auto::flagscan $dir shrink ::shrink::directory 0
}
proc ::shrink::run {} {
::auto::autoflagscan $::auto::root shrink ::shrink::directory
::auto::flagscan $::auto::root shrink ::shrink::directory
}
::auto::register shrink 400

View File

@ -17,7 +17,7 @@ set ::auto::force 0
while {[llength $argv]} {
switch -- [lindex $argv 0] {
-d {
set ::auto::loglevel 2
incr ::auto::loglevel
set ::auto::logfd stdout
}
-f {
@ -71,7 +71,8 @@ if {!$::auto::force} {
set autofreq [$::auto::settings autofreq]
if {$autofreq == 0} { set autofreq 10 }
set timesincelast $(([clock seconds] - [$::auto::settings autolast]) / 60)
set timesincelast $(([clock seconds] - [$::auto::settings autolast]) \
/ 60)
if {$timesincelast < $autofreq} {
::auto::log "Aborting, not yet time to run." 2
::auto::log " elapsed (minutes): $timesincelast (<$autofreq)" 2
@ -108,6 +109,93 @@ set ::auto::rootdev $rootstat(dev)
#########################################################################
# Utility functions
set ::auto::flagdb {}
set ::auto::activeflags {}
set ::auto::extraflags {}
proc ::auto::buildflagdb {dir {active {}}} {{seen {}} {indent 0}} {
variable flagdb
variable activeflags
variable extraflags
variable dustbin
variable rootdev
incr indent 2
log "[string repeat " " $indent]\[$dir]" 3
if {$dir eq $dustbin} {
log "[string repeat " " $indent]Dustbin, skipping." 3
incr indent -2
return
}
file stat "$dir/" st
if {[specialdir $dir]} {
# Special folder
if {$st(dev) != $rootdev} {
log "[string repeat " " $indent\
]Special folder on different device, skipping." 3
incr indent -2
return
}
if {[llength $active]} {
set active {}
log "[string repeat " " $indent\
]Special folder, overriding recursion." 3
}
}
# Already seen
set key "$st(dev):$st(ino)"
if {$key in $seen} {
log "[string repeat " " $indent]Already seen, skipping." 3
incr indent -2
return
}
lappend seen $key
set flags [lmap i \
[glob -nocomplain -directory $dir -tails ".auto*"] \
{ string range $i 5 end }]
foreach x $extraflags {
foreach f [lmap i \
[glob -nocomplain -directory $dir -tails ".$x"] \
{ string range $i 1 end }] {
ladd flags $f
}
}
foreach f $flags {
# If recursive flag found, add to active set.
if {[string index $f end] eq "R"} {
ladd active [string range $f 0 end-1]
}
}
# Add any active flags to the set.
foreach f $active {
ladd flags $f
}
if {[llength $flags]} {
lappend flagdb $dir $flags
log "[string repeat " " $indent] $flags" 3
foreach f $flags { ladd activeflags $f }
}
foreach entry [readdir -nocomplain $dir] {
if {[file isdirectory "$dir/$entry"]} {
buildflagdb "$dir/$entry" $active
}
}
set active {}
incr indent -2
}
set ::auto::recalcdirs {}
proc ::auto::recalcdir {dir} {
@ -124,120 +212,39 @@ proc ::auto::direntries {dir callback} {
}
}
proc ::auto::autoflagscan {dir attr callback {recurse 1} {force 0} {seen {}}} \
{{indent 0} {forceflag ""}} {
variable dustbin
variable rootdev
proc ::auto::flagscan {root flag callback {recurse 1}} {
variable flagdb
variable activeflags
incr indent 2
log "[string repeat " " $indent]\[$dir]" 2
if {$dir eq $dustbin} {
log "[string repeat " " $indent]Dustbin, skipping." 2
incr indent -2
if {$flag ni $activeflags} {
log "No $flag flags in filesystem, suppressing scan."
return
}
file stat "$dir/" st
if {[specialdir $dir]} {
# Special folder
if {$st(dev) != $rootdev} {
log "[string repeat " " $indent\
]Special folder on different device, skipping." 2
incr indent -2
return
if {!$recurse} {
# Just this exact directory
if {[dict exists $flagdb $root] && $flag in $flagdb($root)} {
log "[string toupper $flag]: \[$root]" 2
$callback $root
}
if {$force} {
set force 0
set forceflag ""
log "[string repeat " " $indent\
]Special folder, overriding recursion." 2
}
}
# Already seen
set key "$st(dev):$st(ino)"
if {$key in $seen} {
log "[string repeat " " $indent]Already seen, skipping." 2
incr indent -2
return
}
lappend seen $key
# Recursion
if {!$force && [file exists "$dir/.auto${attr}r"]} {
log "[string repeat " " $indent] (R)" 2
set force 1
set forceflag "$dir/.auto${attr}r"
}
set rootl [string length $root]
oktorun
dsc
if {$force || [file exists "$dir/.auto$attr"]} {
if {[$callback $dir] eq "STOP"} {
log "[string repeat " " $indent\
]Callback returned STOP." 2
incr indent -2
return "STOP"
}
}
foreach entry [readdir -nocomplain $dir] {
if {$recurse && [file isdirectory "$dir/$entry"]} {
if {[autoflagscan "$dir/$entry" \
$attr $callback $recurse $force \
$seen] eq "STOP"} {
incr indent -2
return "STOP"
}
file stat "$dir/$entry" st
set key "$st(dev):$st(ino)"
lappend seen $key
}
}
incr indent -2
}
proc ::auto::flagscan {dir flag callback {seen {}}} {
variable dustbin
if {$dir eq $dustbin} return
if {[specialdir $dir]} return
file stat $dir st
set key "$st(dev):$st(ino)"
if {$key in $seen} {
log "Already seen $dir ($key)" 2
return
}
lappend seen $key
if {[file exists "$dir/.$flag"]} {
if {[$callback $dir] eq "STOP"} {
log "Callback returned STOP." 2
return "STOP"
}
}
foreach entry [readdir -nocomplain $dir] {
if {[file isdirectory "$dir/$entry"]} {
if {[flagscan "$dir/$entry" $flag $callback $seen]
eq "STOP"} {
return "STOP"
}
file stat "$dir/$entry" st
set key "$st(dev):$st(ino)"
lappend seen $key
foreach {dir flags} $flagdb {
if {![string equal -length $rootl $dir $root]} continue
if {$flag in $flags} {
oktorun
dsc
log "[string toupper $flag]: \[$dir]" 2
if {[$callback $dir] eq "STOP"} break
}
}
}
alias ::auto::autoflagscan ::auto::flagscan
######################################################################
# Plugin registration
@ -251,6 +258,12 @@ proc ::auto::register {plugin {priority 500} {fn ""}} {
log "Registered $plugin with priority $priority ($fn)" 2
}
proc ::auto::register_flag {plugin flag} {
variable extraflags
ladd extraflags $flag
log "Registered flag '$flag' for $plugin" 2
}
# Backwards compatibility with legacy plugins
set ::auto::legacy {}
proc register {type fn {priority 50}} {
@ -312,6 +325,20 @@ if {[llength $::auto::legacy]} {
alias scanup ::auto::autoflagscanup
}
######################################################################
# Run media flag database
::auto::log "Scanning media for flags..."
set st [clock milliseconds]
::auto::buildflagdb $::auto::root
::auto::log "Scan completed ([::auto::elapsed $st] seconds)"
::auto::log "Active flags: $::auto::activeflags"
if {$::auto::loglevel > 1} {
foreach {dir flags} $::auto::flagdb {
::auto::log "[format %-80s $dir] - $flags" 2
}
}
######################################################################
# Run plugins

View File

@ -1,20 +1,55 @@
#!/mod/bin/jimsh
source /mod/webif/lib/setup
require queue.class
require queue.class system.class
switch -- [queue version] {
1 {
puts "Clearing queue due to version change..."
queue dbhandle -close
file delete /mod/etc/queue.db
queue dbhandle
}
2 {
puts "Queue version is up-to-date."
}
default {
puts "Unknown queue version."
proc fixflags {dir} {
puts "Upgrading directory flags..."
foreach entry [readdir -nocomplain $dir] {
if {[file isdirectory "$dir/$entry"]} {
fixflags "$dir/$entry"
continue
}
if {[string match {.auto*r} $entry]} {
puts "Updating flag $dir/$entry"
file rename "$dir/$entry" \
"$dir/[string range $entry 0 end-1]R"
}
}
}
set queries {
2 { {alter table queue add column last integer} }
}
set latest 3
set cur [queue version]
if {$cur == $latest} {
puts "Queue database is up-to-date."
exit
}
if {$cur < 3} { fixflags [system mediaroot] }
if {$cur < 2} {
puts "Clearing queue due to version change..."
queue dbhandle -close
file delete /mod/etc/queue.db
queue dbhandle
set cur $latest
}
set db [queue dbhandle]
loop i $cur $latest {
puts "Upgrading queue database to version $($i + 1)"
foreach q $queries($i) {
catch { $db query $q }
$db query {
update config
set val = %s
where var = 'version'
} $($i + 1)
}
}

View File

@ -36,7 +36,7 @@ proc {dir iconset} {dir} {
set attrs {}
set autoshrinkr 0
if {[file exists "$dir/.autoshrinkr"]} {
if {[file exists "$dir/.autoshrinkR"]} {
set autoshrinkr 1
lappend icons [_addicon "/img/compressr.png" \
"Recursive Auto-shrink"]
@ -58,7 +58,7 @@ proc {dir iconset} {dir} {
}
set autodecryptr 0
if {[file exists "$dir/.autodecryptr"]} {
if {[file exists "$dir/.autodecryptR"]} {
set autodecryptr 1
lappend icons [_addicon "/img/decryptr.png" \
"Recursive Auto-decrypt"]

View File

@ -14,6 +14,7 @@ class queue {
retries 0
interrupts 0
submitted 0
last 0
}
# Queue status values:
@ -52,7 +53,8 @@ proc {queue dbhandle} {args} {
runtime integer,
retries integer default 0,
interrupts integer default 0,
submitted integer
submitted integer,
last integer
);
}
$::queue::db query {
@ -62,7 +64,7 @@ proc {queue dbhandle} {args} {
);
}
$::queue::db query {
insert into config values('version', 2);
insert into config values('version', 3);
}
$::queue::db query {
create unique index file on queue(file, action);
@ -117,13 +119,16 @@ proc {queue fetch} {file action} {
return {}
}
proc {queue insert} {ts action} {
proc {queue insert} {args ts action} {
set db [queue dbhandle]
set status "PENDING"
if {"-hold" in $args} { set status "HOLD" }
$db query {
insert or ignore into queue(submitted, file, action)
values(%s, '%s', '%s')
} [clock seconds] [file normalize [$ts get file]] $action
insert or ignore into queue(submitted, file, action, status)
values(%s, '%s', '%s', '%s')
} [clock seconds] [file normalize [$ts get file]] $action $status
return [queue fetch [$ts get file] $action]
}
@ -259,9 +264,10 @@ queue method update {_status {_log ""} {_retries 0} {_runtime 0}} {
set status = '%s',
log = '%s',
retries = retries + %s,
runtime = %s
runtime = %s,
last = %s
where id = %s
} $_status $_log $_retries $_runtime $id
} $_status $_log $_retries $_runtime [clock seconds] $id
set status $_status
set log $_log
@ -279,3 +285,8 @@ queue method set {var val} {
set $var $val
}
queue method submit {{_start 0}} {
if {$_start} { $self set start $_start }
queue resubmit $id
}

View File

@ -410,7 +410,7 @@ rsv method insert {{table pending} {force 0} {defer 0}} {
}
# Duplicate check - all tables
if {!$force && $action == 0} {
if {!$force && $action == 0 && $usevtid} {
foreach tab {pending TBL_RESERVATION} {
set rec [$rsvdb query "
select ulslot from $tab

View File

@ -70,7 +70,7 @@ tvdb method _fetch {url} {
return $ret
}
tvdb method _parse {xml vars {end "XXX"}} {
tvdb method _parse {xml vars {end "XX"}} {
set x [xml init $xml]
set cattr 0
while {1} {