From b004ac22e3e1ad1f26199991aa0f214c5420f28c Mon Sep 17 00:00:00 2001 From: sloumdrone Date: Tue, 4 Dec 2018 19:49:04 -0800 Subject: [PATCH] Fixed issue where improper URL did not trigger error, but froze app --- connect.py | 2 +- gui.py | 21 ++++++++++++--------- parser.py | 4 ++-- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/connect.py b/connect.py index d0ce3b7..2c4dcf6 100644 --- a/connect.py +++ b/connect.py @@ -8,7 +8,7 @@ class connect: def request(self, resource, host, itemtype, port=70): #connects to server and returns list with response type and body socket_conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - socket_conn.settimeout(5.0) + socket_conn.settimeout(15.0) try: socket_conn.connect((host, port)) diff --git a/gui.py b/gui.py index c4ad72a..96e6716 100644 --- a/gui.py +++ b/gui.py @@ -46,7 +46,7 @@ class GUI: self.MENU_HLB = self.LINK self.MENU_HLF = self.BAR_BG - #create and configure root window + #configure root window self.root = tk.Tk(className='Burrow') self.root.title('Burrow') sh = self.root.winfo_screenheight() @@ -85,7 +85,6 @@ class GUI: #menu objects self.context_menu = tk.Menu(self.body, tearoff=0, bg=self.MENU_BG, fg=self.MENU_FG, activebackground=self.MENU_HLB, activeforeground=self.MENU_HLF, activeborderwidth=0) - self.pack_geometry() self.add_status_titles() self.add_event_listeners() @@ -209,7 +208,7 @@ class GUI: self.root.clipboard_append(text) - # ------------Start navigation methods---------------------------- + # ------------Start navigation methods--------------------------- def handle_request(self,event=False, url=False, history=True): @@ -225,22 +224,25 @@ class GUI: return self.load_home_screen(history) else: data = {'type': '3', 'body': '3ERROR: Improperly formatted URL\tfalse\tnull.host\t1\n'} - return False #error handling goes here + # return False + elif parsed_url['protocol'] == 'http://': + wb.open(url,2,True) + self.populate_url_bar(self.history[-1]) + self.loading_bar.destroy() + return False self.populate_url_bar(url) if history: self.add_to_history(url) - if parsed_url['type'] == '7': + if parsed_url and parsed_url['type'] == '7': self.show_search() return False # display search elif not parsed_url: - pass + data = {'type': '3', 'body': '3ERROR: Improperly formatted URL\tfalse\tnull.host\t1\n'} else: data = self.execute_address(parsed_url) - if not data: - return False #error handling goes here self.send_to_screen(data['body'],data['type']) @@ -407,7 +409,8 @@ class GUI: tag_name = 'link{}'.format(self.link_count) callback = (lambda event, href=link, tag_name=tag_name: self.gotolink(event, href, tag_name)) - favorite = [x for x in self.config['favorites'] if x['url'] == link] + # favorite = [x for x in self.config['favorites'] if x['url'] == link] + favorite = self.is_favorite(link) self.site_display.tag_bind(tag_name, "", callback) self.site_display.insert(tk.END, types[x['type']], ('type_tag',)) self.site_display.insert(tk.END,'\t\t') diff --git a/parser.py b/parser.py index 8c7c15e..b517f84 100644 --- a/parser.py +++ b/parser.py @@ -1,7 +1,7 @@ import re # Handles parsing gopher data: -# URLs, Menus +# URLs, Menus class parser: @@ -38,7 +38,7 @@ class parser: resource = '/' if not itemtype: - return False + itemtype = '1' self.filetype = itemtype[len(itemtype) - 1] if itemtype else '1'