Galeon and Thunar
Scott T. Hildreth
shild at sbcglobal.net
Wed Feb 21 21:17:40 CET 2007
On Wed, 2007-02-21 at 12:08 -0800, Brian J. Tarricone wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On Wed, 21 Feb 2007 13:50:57 -0600 Scott T. Hildreth wrote:
>
> > On Sat, 2007-02-17 at 15:31 -0800, Brian J. Tarricone wrote:
> > > -----BEGIN PGP SIGNED MESSAGE-----
> > > Hash: RIPEMD160
> > >
> > > Scott T. Hildreth wrote:
> > > > On Thu, 2007-02-15 at 06:32 -0600, Scott T. Hildreth wrote:
> > > >> On Thu, 2007-02-15 at 08:27 +0100, Nick Schermer wrote:
> > > >>> On Wed, 14 Feb 2007 20:32:26 -0600, "Scott T. Hildreth"
> > > >>> <shild at sbcglobal.net> wrote:
> > > >>>> I just ran the panel from the command line, trying to see
> > > >>>> if I could see info printed to the term when I tried the
> > > >>>> search for the weather plugin.
> > > >>> Is the weather plugin not available in the add dialog?
> > > >> I worded that wrong. I meant to say that I am using the
> > > >> "Search" of the weather plugin and it is not doing anything. So
> > > >> I was hopping to see some debug info in the term. I can strace
> > > >> the process to see what happens during the search.
> > > >
> > > > close(6) = 0
> > > > socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 6
> > > > fcntl(6, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
> > > > connect(6, {sa_family=0x20 /* AF_??? */, sa_data="main\' below
> > > > wi"}, 16) = -1 EINPROGRESS (Operation now in progress)
> > > > ioctl(3, FIONREAD, [1948280948]) = 0
> > > > gettimeofday({1679844712, 1767992687}, NULL) = 0
> > > > poll([{fd=3, events=POLLIN}], 1, 0) = 0
> > > > write(3,
> > > > "5\20\4\0D\f`\2\311\t`\2o\0\34\0\232\4\5\0E\f`\2D\f`\002"...,
> > > > 1996) = 1996 ioctl(3, FIONREAD, [0]) = 0
> > > > gettimeofday({329370, 39849029}, NULL) = 0
> > > > poll([{fd=3, events=POLLIN}], 1, 0) = 0
> > > > sendto(6, "GET /search/search?where=60188 H"..., 67, 0, NULL, 0)
> > > > = -1 ENOTCONN (Socket is not connected)
> > > > close(6) = 0
> > >
> > > from the EINPROGRESS return from connect(), it looks like the
> > > plugin is using non-blocking sockets. The ENOTCONN could be
> > > because the connect did not complete yet.
> > >
> > > Looking at the code, yeah, the http stuff doesn't actually check to
> > > see if the connect completed before writing to the socket. After
> > > calling connect(), it needs to select() on the socket (check for
> > > ability to write), then call getsockopt(fd, SOL_SOCKET,
> > > SO_ERROR,...) to ensure the connect() completed successfully.[1]
> > >
> > > Feel free to file a bug against the weather plugin with roughly this
> > > information...
> >
> > So I hacked this into weather-http.c - the http_connect() function
> > and it works now. Thanks Brian. Nick should I make a bug report?
> >
> >
> > else {
> > gint iters_left;
> >
> > for (iters_left = 25; iters_left >= 0; iters_left--) {
> >
> > fd_set wfd;
> > struct timeval tv = { 2, 0 };
> > int sock_err = 0;
> > socklen_t sock_err_len = sizeof(int);
> > gpointer msg;
> >
> > FD_ZERO(&wfd);
> > FD_SET(fd, &wfd);
> >
> > DBG("checking for a connection...");
> >
> > /* wait until the connect attempt finishes */
> > if(select(FD_SETSIZE, NULL, &wfd, NULL, &tv) < 0)
> > break;
> >
> > /* check to see if it finished, and, if so, if there was an
> > * error, or if it completed successfully */
> > if(FD_ISSET(fd, &wfd)) {
> > if (!getsockopt(fd, SOL_SOCKET, SO_ERROR, &sock_err,
> > &sock_err_len) && !sock_err)
> > {
> > DBG(" connection succeeded");
> > } else {
> > DBG(" connection failed: sock_err is %d",
> > sock_err); }
> > break;
> > }
> >
> > }
> >
> > return fd;
>
> Feel free to file a bug and attach a patch. I'm not sure if that's the
> right fix in this case. If the network stuff is done in the main
> thread in the weather plugin, this code will block the UI until it
> either succeeds or fails. The mailwatch plugin example I gave does all
> network I/O in a separate thread, so it's not an issue. But at least
> something similar to what you did will need to be implemented.
That's why I didn't make a patch, I just wanted to see if it fixed
the problem. I figure the Nick has a better patch. :-)
Thanks, I will file a bug report.
>
> -brian
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.6 (GNU/Linux)
>
> iD8DBQFF3KbJ6XyW6VEeAnsRAnKNAJ4rEx1eaiT/8VUfizFy5XxwEhBMLQCg8MOs
> CwaTHwibUfLB9dJSBP+Vkp4=
> =lXYR
> -----END PGP SIGNATURE-----
> _______________________________________________
> Xfce mailing list
> Xfce at xfce.org
> http://foo-projects.org/mailman/listinfo/xfce
> http://www.xfce.org
--
Scott T. Hildreth <shild at sbcglobal.net>
More information about the Xfce
mailing list