--- deliantra/Deliantra-Client/DC/Protocol.pm 2007/07/14 12:05:53 1.119 +++ deliantra/Deliantra-Client/DC/Protocol.pm 2007/07/14 13:04:42 1.120 @@ -70,10 +70,11 @@ # check if already cached CFPlus::DB::get "res-metadata" => $chksum, sub { my ($meta_json) = @_; + my $path = CFPlus::DB::path_of_res $chksum; if (defined $meta_json) { my $meta = $self->{json_coder}->decode ($meta_json); - $meta->{path} = CFPlus::DB::path_of_res $chksum; + $meta->{path} = $path; $self->{music_meta}{$chksum} = $meta; } else { ::message ({ markup => "starting to download song #$face/$pri, check your output-rate setting if your connection gets laggy." }); @@ -81,18 +82,18 @@ my $len = length $_[1]; my ($meta_json, $data) = unpack "(w/a*)*", $_[1]; - my $meta = $self->{json_coder}->decode ($meta_json); - $meta->{path} = CFPlus::DB::path_of_res $chksum; - $self->{music_meta}{$chksum} = $meta; + CFPlus::DB::write_file $path, $data, sub { + CFPlus::DB::put "res-metadata" => $chksum => $meta_json, sub { + my $meta = $self->{json_coder}->decode ($meta_json); + $meta->{path} = $path; + $self->{music_meta}{$chksum} = $meta; - CFPlus::DB::write_file $meta->{path}, $data, sub { }; - CFPlus::DB::put "res-metadata" => $chksum => $meta_json, sub { }; - - ::message ({ markup => "downloaded song #$face, size $len octets" }); + ::message ({ markup => "downloaded song #$face, size $len octets" }); + &::audio_music_set ($self->{songs}); + }; + }; }); } - - &::audio_music_set ($self->{songs}); } } }