diff options
author | Carl-Anton Ingmarsson <ca.ingmarsson@gmail.com> | 2011-07-23 22:18:42 +0200 |
---|---|---|
committer | Christian Kellner <gicmo@gnome.org> | 2011-08-25 21:19:52 +0200 |
commit | 4158b740c9425c1b15be951ea460e93a629cbf23 (patch) | |
tree | 9791ebe8d97ae63f676752786a7704b1d93d7d6b | |
parent | a16937a25aece6576acb41c9eba42b5a4b90e64a (diff) | |
download | gvfs-4158b740c9425c1b15be951ea460e93a629cbf23.tar.gz |
afp: better error handling when server doesn't support anonymous login
-rw-r--r-- | daemon/gvfsafpconnection.h | 1 | ||||
-rw-r--r-- | daemon/gvfsafpserver.c | 28 |
2 files changed, 17 insertions, 12 deletions
diff --git a/daemon/gvfsafpconnection.h b/daemon/gvfsafpconnection.h index 586d14b0..8ccf430b 100644 --- a/daemon/gvfsafpconnection.h +++ b/daemon/gvfsafpconnection.h @@ -203,6 +203,7 @@ typedef enum AFP_RESULT_NO_MORE_SESSIONS = -1068, AFP_RESULT_ACCESS_DENIED = -5000, AFP_RESULT_AUTH_CONTINUE = -5001, + AFP_RESULT_BAD_UAM = -5002, AFP_RESULT_DIR_NOT_EMPTY = -5007, AFP_RESULT_DISK_FULL = -5008, AFP_RESULT_EOF_ERR = -5009, diff --git a/daemon/gvfsafpserver.c b/daemon/gvfsafpserver.c index 35dc5522..acafb87e 100644 --- a/daemon/gvfsafpserver.c +++ b/daemon/gvfsafpserver.c @@ -678,7 +678,7 @@ do_login (GVfsAfpServer *afp_serv, if (!g_slist_find_custom (afp_serv->uams, AFP_UAM_NO_USER, g_str_equal)) { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED, + g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, _("AFP server %s doesn't support anonymous login"), afp_serv->server_name); return FALSE; @@ -703,19 +703,23 @@ do_login (GVfsAfpServer *afp_serv, if (res_code != AFP_RESULT_NO_ERROR) { - if (res_code == AFP_RESULT_USER_NOT_AUTH) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED, - _("AFP server %s declined anonymous login"), - afp_serv->server_name); - return FALSE; - } - else + switch (res_code) { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - _("Anonymous login to AFP server %s failed"), afp_serv->server_name); - return FALSE; + case AFP_RESULT_USER_NOT_AUTH: + case AFP_RESULT_BAD_UAM: + g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + _("AFP server %s doesn't support anonymous login"), + afp_serv->server_name); + break; + + default: + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + _("Anonymous login to AFP server %s failed, got error code: %d"), + afp_serv->server_name, res_code); + break; } + + return FALSE; } return TRUE; |