@@ -64,19 +64,39 @@ def _extract_rc_msg(result):
6464 ('permissiondenied' , 'permissiondenied' ): exceptions .io .core .PrivilegeError ,
6565}
6666
67+ _STRICT_PERMISSION_TASK_ERROR_MAP = {
68+ (None , None , 'permissiondenied' ): exceptions .io .core .PrivilegeError ,
69+ (None , None , 'permission denied' ): exceptions .io .core .PrivilegeError ,
70+ (None , None , 'access denied' ): exceptions .io .core .PrivilegeError ,
71+ (None , None , 'read only' ): exceptions .io .core .PrivilegeError ,
72+ (None , None , 'action is not allowed' ): exceptions .io .core .PrivilegeError ,
73+ (None , 'permission denied' , None ): exceptions .io .core .PrivilegeError ,
74+ (None , 'access denied' , None ): exceptions .io .core .PrivilegeError ,
75+ (None , 'read only' , None ): exceptions .io .core .PrivilegeError ,
76+ (None , 'action is not allowed' , None ): exceptions .io .core .PrivilegeError ,
77+ (0 , None , 'permissiondenied' ): exceptions .io .core .PrivilegeError ,
78+ ('0' , None , 'permissiondenied' ): exceptions .io .core .PrivilegeError ,
79+ }
80+
6781
6882def _raise_strict_permission_denied (result , path ):
6983 rc , msg = _extract_rc_msg (result )
7084 rc = _normalize_rc (rc )
7185 msg = _normalize_msg (msg )
72- logger .debug (
73- 'strict_permission response for %s: rc=%r msg=%r' ,
74- path , rc , msg
86+ logger .info (
87+ 'strict_permission response for %s: rc=%r msg=%r raw=%s ' ,
88+ path , rc , msg , type ( result ). __name__
7589 )
7690 error_cls = _STRICT_PERMISSION_ERROR_MAP .get ((rc , msg ))
7791 if error_cls is not None :
7892 raise error_cls (path )
7993
94+ def _extract_task_error_tuple (result ):
95+ rc = _normalize_rc (getattr (result , 'rc' , None ))
96+ msg = _normalize_msg (getattr (result , 'msg' , None ))
97+ error_type = _normalize_msg (getattr (result , 'error_type' , None ))
98+ return rc , msg , error_type
99+
80100
81101def split_file_directory (listdir , receiver , destination ):
82102 """
@@ -1024,10 +1044,10 @@ async def _a_execute(self):
10241044
10251045 def _handle_response (self , r ):
10261046 if self ._strict_permission :
1027- msg = getattr ( r , 'msg' , None )
1028- error_type = getattr ( r , 'error_type' , None )
1029- if _is_permission_denied_message ( str ( msg )) or _is_permission_denied_message ( str ( error_type )) :
1030- raise exceptions . io . core . PrivilegeError ('' )
1047+ rc , msg , error_type = _extract_task_error_tuple ( r )
1048+ error_cls = _STRICT_PERMISSION_TASK_ERROR_MAP . get (( rc , msg , error_type ) )
1049+ if error_cls is not None :
1050+ raise error_cls ('' )
10311051 if not self .block :
10321052 return r
10331053
0 commit comments