Skip to content

Commit

Permalink
VENOM-467: Fix file send avatar not sending hash
Browse files Browse the repository at this point in the history
* Fix hash not being sent when distributing avatar
* Fix a bug preventing you from creating new tox profiles
  • Loading branch information
naxuroqa committed Dec 21, 2018
1 parent 0525ad8 commit 08bf754
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 9 deletions.
2 changes: 1 addition & 1 deletion src/core/Profile.vala
Expand Up @@ -145,7 +145,7 @@ namespace Venom {
&& !exists(baseprof + ".json") && !exists(baseprof + ".accels"));
}

private static bool exists(string path) {
public static bool exists(string path) {
return GLib.FileUtils.test(path, GLib.FileTest.EXISTS);
}

Expand Down
2 changes: 1 addition & 1 deletion src/testing/mocks/MockToxSession.vala
Expand Up @@ -221,7 +221,7 @@ namespace Mock {
.create();
mock().actual_call(this, "file_send_data", args).get_throws();
}
public void file_send_avatar(uint32 friend_number, uint8[] avatar_data) throws ToxError {
public void file_send_avatar(uint32 friend_number, uint8[] avatar_data, uint8[] avatar_hash) throws ToxError {
var args = Arguments.builder()
.uint(friend_number)
.create();
Expand Down
6 changes: 4 additions & 2 deletions src/tox/ToxFriendAdapter.vala
Expand Up @@ -128,10 +128,11 @@ namespace Venom {
logger.d("start_avatar_distribution");
uint8[] avatar_data;
user_info.avatar.pixbuf.save_to_buffer(out avatar_data, "png");
var hash = ToxCore.Tox.hash(avatar_data);
foreach (var contact in friends) {
var c = contact as Contact;
if (c.is_connected()) {
session.file_send_avatar((c as Contact).tox_friend_number, avatar_data);
session.file_send_avatar((c as Contact).tox_friend_number, avatar_data, hash);
}
}
}
Expand Down Expand Up @@ -283,7 +284,8 @@ namespace Venom {
if (is_connected) {
uint8[] avatar_data;
user_info.avatar.pixbuf.save_to_buffer(out avatar_data, "png");
session.file_send_avatar(friend_number, avatar_data);
var hash = ToxCore.Tox.hash(avatar_data);
session.file_send_avatar(friend_number, avatar_data, hash);

try {
Message ? message = queued_messages.peek(friend_number);
Expand Down
13 changes: 8 additions & 5 deletions src/tox/ToxSession.vala
Expand Up @@ -93,7 +93,7 @@ namespace Venom {

public abstract void file_control(uint32 friend_number, uint32 file_number, FileControl control) throws ToxError;
public abstract void file_send_data(uint32 friend_number, GLib.File file) throws ToxError;
public abstract void file_send_avatar(uint32 friend_number, uint8[] avatar_data) throws ToxError;
public abstract void file_send_avatar(uint32 friend_number, uint8[] avatar_data, uint8[] avatar_hash) throws ToxError;
public abstract void file_send_chunk(uint32 friend_number, uint32 file_number, uint64 position, uint8[] data) throws ToxError;

public abstract void call(uint32 friend_number, uint32 audio_bit_rate, uint32 video_bit_rate) throws ToxError;
Expand Down Expand Up @@ -197,10 +197,13 @@ namespace Venom {
options.log_callback = on_tox_message;
friends = new Gee.HashMap<uint32, IContact>();

var savedata = profile.load_sessiondata();
if (savedata != null) {
uint8[] savedata;
if (Profile.exists(profile.toxfile)) {
savedata = profile.load_sessiondata();
options.savedata_type = SaveDataType.TOX_SAVE;
options.set_savedata_data(savedata);
} else {
logger.i("No tox data file found, creating new one.");
}

if (settings_database.enable_proxy) {
Expand Down Expand Up @@ -875,9 +878,9 @@ namespace Venom {
}
}

public virtual void file_send_avatar(uint32 friend_number, uint8[] avatar_data) throws ToxError {
public virtual void file_send_avatar(uint32 friend_number, uint8[] avatar_data, uint8[] avatar_hash) throws ToxError {
var e = ErrFileSend.OK;
var ret = handle.file_send(friend_number, FileKind.AVATAR, avatar_data.length, null, "", out e);
var ret = handle.file_send(friend_number, FileKind.AVATAR, avatar_data.length, avatar_hash, "", out e);
if (e != ErrFileSend.OK) {
logger.e("file send avatar request failed: " + e.to_string());
throw new ToxError.GENERIC(e.to_string());
Expand Down

0 comments on commit 08bf754

Please sign in to comment.