Re: [Evolution-hackers] Re: the bug about libsoup



JP Rosevear wrote:

On Thu, 2003-04-17 at 06:23, Sean Gao wrote:
Hi JP,
I have tested as Joe suggested. The puzzle is that soup_ssl_hup_waitpid is not entered at all. However, it does be really called on Linux Platform, that's why I say it could be the difference of G_IO_XXX implementation or signal mechanism on different platforms causes such issue

Are you getting reads of zero length instead?

-JP
Hi JP,
I just added some code in soup_ssl_hup_waitpid() to test if I read zero length. It really gets zero bytes reading, but after that it complete the waitpid and following process and exit this function, hydrogen hangs ... I do not know if my method is right or there may be some other problems casue the hanging. Of course I add G_IO_IN as one of the condition to be watched.
Regards
-Sean


static gboolean
soup_ssl_hup_waitpid (GIOChannel *source, GIOCondition condition, gpointer user_data)
{

#ifndef RESPONSE_BLOCK_SIZE
#define RESPONSE_BLOCK_SIZE 8192
#endif
   SoupSSLInfo *ssl_info = user_data;

   gchar read_buf [RESPONSE_BLOCK_SIZE];
   gsize bytes_read = 0;
   GIOError error;

   if (condition&G_IO_IN) {
       error = g_io_channel_read (source,
                   read_buf,
                   sizeof (read_buf),
&bytes_read);
       if  (!(error == G_IO_ERROR_NONE && bytes_read == 0))
           return TRUE;
}
   while (waitpid (ssl_info->ppid, NULL, 0) == -1 && errno == EINTR)
       ;
g_io_channel_unref (ssl_info->real_sock);
   g_free (ssl_info);

   return FALSE;
}







[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]