790 |
790 |
791 } |
791 } |
792 } |
792 } |
793 } else if (!strcmp(type, "set")) { |
793 } else if (!strcmp(type, "set")) { |
794 } else if (!strcmp(type, "error")) { |
794 } else if (!strcmp(type, "error")) { |
795 char *name=NULL, *desc=NULL; |
795 char *name=NULL, *desc; |
|
796 char *text=NULL; |
796 int code = 0; |
797 int code = 0; |
797 |
798 |
798 x = xmlnode_get_tag(packet->x, "error"); |
799 x = xmlnode_get_tag(packet->x, "error"); |
799 p = xmlnode_get_attrib(x, "code"); if (p) code = atoi(p); |
800 p = xmlnode_get_attrib(x, "code"); if (p) code = atoi(p); |
800 p = xmlnode_get_attrib(x, "id"); if (p) name = p; |
801 p = xmlnode_get_attrib(x, "id"); if (p) name = p; |
801 p = xmlnode_get_tag_data(packet->x, "error"); if (p) desc = p; |
802 p = xmlnode_get_tag_data(packet->x, "error"); if (p) desc = p; |
802 |
803 |
803 #if 0 |
804 // Sometimes there is a text message |
|
805 x = xmlnode_get_tag(x, "text"); |
|
806 p = xmlnode_get_data(x); if (p) text = p; |
|
807 |
804 switch(code) { |
808 switch(code) { |
805 case 401: /* Unauthorized */ |
809 case 401: desc = "Unauthorized"; |
806 case 302: /* Redirect */ |
810 break; |
807 case 400: /* Bad request */ |
811 case 302: desc = "Redirect"; |
808 case 402: /* Payment Required */ |
812 break; |
809 case 403: /* Forbidden */ |
813 case 400: desc = "Bad request"; |
810 case 404: /* Not Found */ |
814 break; |
811 case 405: /* Not Allowed */ |
815 case 402: desc = "Payment Required"; |
812 case 406: /* Not Acceptable */ |
816 break; |
813 case 407: /* Registration Required */ |
817 case 403: desc = "Forbidden"; |
814 case 408: /* Request Timeout */ |
818 break; |
815 case 409: /* Conflict */ |
819 case 404: desc = "Not Found"; |
816 case 500: /* Internal Server Error */ |
820 break; |
817 case 501: /* Not Implemented */ |
821 case 405: desc = "Not Allowed"; |
818 case 502: /* Remote Server Error */ |
822 break; |
819 case 503: /* Service Unavailable */ |
823 case 406: desc = "Not Acceptable"; |
820 case 504: /* Remote Server Timeout */ |
824 break; |
|
825 case 407: desc = "Registration Required"; |
|
826 break; |
|
827 case 408: desc = "Request Timeout"; |
|
828 break; |
|
829 case 409: desc = "Conflict"; |
|
830 break; |
|
831 case 500: desc = "Internal Server Error"; |
|
832 break; |
|
833 case 501: desc = "Not Implemented"; |
|
834 break; |
|
835 case 502: desc = "Remote Server Error"; |
|
836 break; |
|
837 case 503: desc = "Service Unavailable"; |
|
838 break; |
|
839 case 504: desc = "Remote Server Timeout"; |
|
840 break; |
821 default: |
841 default: |
822 /* |
842 desc = NULL; |
823 if (!regmode) { |
|
824 face.log(desc.empty() ? |
|
825 _("+ [jab] error %d") : |
|
826 _("+ [jab] error %d: %s"), |
|
827 code, desc.c_str()); |
|
828 |
|
829 if (!jhook.flogged && code != 501) { |
|
830 close(jc->fd); |
|
831 jc->fd = -1; |
|
832 } |
|
833 |
|
834 } else { |
|
835 jhook.regerr = desc; |
|
836 |
|
837 } |
|
838 */ |
|
839 } |
843 } |
840 #endif |
844 |
841 scr_LogPrint(LPRINT_LOGNORM, "Error code from server (%d)", code); |
845 scr_LogPrint(LPRINT_LOGNORM, "Error code from server: %d %s", |
842 |
846 code, (desc ? desc : "")); |
|
847 if (text) |
|
848 scr_LogPrint(LPRINT_LOGNORM, "Server message: %s", text); |
|
849 |
|
850 if (name) |
|
851 scr_LogPrint(LPRINT_DEBUG, "Error id: %s", name); |
843 } |
852 } |
844 break; |
853 break; |
845 |
854 |
846 case JPACKET_PRESENCE: |
855 case JPACKET_PRESENCE: |
847 x = xmlnode_get_tag(packet->x, "show"); |
856 x = xmlnode_get_tag(packet->x, "show"); |