diff --git a/src/ghtml-gtkhtml.c b/src/ghtml-gtkhtml.c index b454e4f..6cd5f34 100644 --- a/src/ghtml-gtkhtml.c +++ b/src/ghtml-gtkhtml.c @@ -204,15 +204,21 @@ gboolean ghtml_go_forward(GtkWidget * ghtml) void ghtml_load_url(GtkWidget * widget, char const * url) { GHtml * ghtml; + gchar * link; #ifdef DEBUG fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, url); #endif ghtml = g_object_get_data(G_OBJECT(widget), "ghtml"); + if((link = _ghtml_make_url(NULL, url)) != NULL) + url = link; if(_ghtml_document_load(ghtml, url) != 0) + { + g_free(link); return; + } g_free(ghtml->html_base); - ghtml->html_base = g_strdup(url); + ghtml->html_base = (link != NULL) ? link : g_strdup(url); g_free(ghtml->html_url); ghtml->html_url = g_strdup(url); } @@ -599,12 +605,18 @@ static void _http_data_complete(GConnHttpEventData * event, GHtmlConn * conn) { gchar * buf; gsize size; - gdouble fraction; if(gnet_conn_http_steal_buffer(conn->http, &buf, &size) != TRUE) - return 0; - html_stream_write(conn->stream, buf, size); - surfer_set_progress(conn->ghtml->surfer, 1.0); + { + /* FIXME report error */ + surfer_set_progress(conn->ghtml->surfer, 0.0); + } + else + { + if(size > 0) + html_stream_write(conn->stream, buf, size); + surfer_set_progress(conn->ghtml->surfer, 1.0); + } _ghtmlconn_delete(conn); } @@ -615,7 +627,11 @@ static void _http_data_partial(GConnHttpEventData * event, GHtmlConn * conn) gdouble fraction; if(gnet_conn_http_steal_buffer(conn->http, &buf, &size) != TRUE) - return 0; + { + /* FIXME report error */ + _ghtmlconn_delete(conn); + return; + } html_stream_write(conn->stream, buf, size); if(conn->content_length > 0) {