if an old connection suddenly gets an io error while reading or writing,
authorDan Winship <danw@src.gnome.org>
Fri, 25 Apr 2003 17:34:08 +0000 (17:34 +0000)
committerDan Winship <danw@src.gnome.org>
Fri, 25 Apr 2003 17:34:08 +0000 (17:34 +0000)
        * libsoup/soup-queue.c (soup_queue_error_cb): if an old connection
        suddenly gets an io error while reading or writing, assume it's a
        timeout or something, close the connection, and requeue the
        message.

ChangeLog
libsoup/soup-queue.c

index 6f7752c..55c2b21 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2003-04-25  Dan Winship  <danw@ximian.com>
+
+       * libsoup/soup-queue.c (soup_queue_error_cb): if an old connection
+       suddenly gets an io error while reading or writing, assume it's a
+       timeout or something, close the connection, and requeue the
+       message.
+
 2003-04-23  Dan Winship  <danw@ximian.com>
 
        * libsoup/soup-message.c (soup_message_cleanup): Don't set up the
index e862bfa..679f8e1 100644 (file)
@@ -90,11 +90,16 @@ soup_queue_error_cb (gboolean body_started, gpointer user_data)
                                        req->priv->retries++;
                                        soup_message_requeue (req);
                                }
-                       } else {
+                       } else if (soup_connection_is_new (req->connection)) {
                                soup_message_set_error (
                                        req,
                                        SOUP_ERROR_CANT_CONNECT);
                                soup_message_issue_callback (req);
+                       } else {
+                               /* Must have timed out. Try a new connection */
+                               soup_connection_release (req->connection);
+                               req->connection = NULL;
+                               soup_message_requeue (req);
                        }
                } else {
                        soup_message_set_error (req, SOUP_ERROR_IO);