[Gambas-user] Fwd: [Gambas Bug Tracker] Bug #1196: Socket Lof returns 0 when data is available.

Benoît Minisini gambas at ...1...
Thu Oct 5 03:30:34 CEST 2017



-------- Message transféré --------
Sujet : [Gambas Bug Tracker] Bug #1196: Socket Lof returns 0 when data is available.
Date : Thu, 05 Oct 2017 01:27:17 GMT
De : bugtracker at ...3416...
Pour : tmorehen at ...3634..., g4mba5 at ...626...

http://gambaswiki.org/bugtracker/edit?object=BUG.1196&from=L21haW4-

Tony MOREHEN reported a new bug.

Summary
-------

Socket Lof returns 0 when data is available.

Type             : Bug
Priority         : Medium
Gambas version   : Unknown
Product          : Unknown


Description
-----------

My Imap test program runs flawlessly when I do a direct read from the socket after sending a command.  However the program locks when I try to queue messages from the server.  I need to queue messages because I need to capture unexpected messages from the server, ie messages that are not replies to my command.

I've tried two approaches to read messages from the server:  the first uses the Socket_Read event,  When the Read event is triggered, my code uses Readline to read from the Socket, until there is no more data waiting.  After some number of lines, the Read event is no longer triggered even though the server has sent that data.

The second approach uses polling to check if data is available.  every 0.5 seconds, a timer event is triggered.  My code then checks the length of the socket stream and, if non-zero uses Readline to read until no more data is available.  After a similar number of lines to the first approach, stream length stays a zero even though the server has sent the data.

I suspect that there may be issues the Gambas code that reads Lof().  The Read event is triggered by a watch routine that is, essentially, an infinite comprised of a wait delay followed by a Lof test.  If Lof > 0 then the Read event is raised.  Lof is then common to both approaches and so is the likely culprit.

I know that the server has sent the lost data, because I am using a Dummy server that sends the correct answers to to the Imap test program.  The two programs connect over localhost so network errors can be discounted.

I've attached the Imap test program and the dummy server.


System information
------------------

[System]
Gambas=3.9.90 r8018
OperatingSystem=Linux
Kernel=4.8.15-1-MANJARO
Architecture=x86_64
Distribution=Manjaro Linux
Desktop=XFCE
Theme=Gtk
Language=en_CA.utf8
Memory=3947M

[Libraries]
Cairo=libcairo.so.2.11400.8
Curl=libcurl.so.4.4.0
DBus=libdbus-1.so.3.14.9
GStreamer=libgstreamer-0.10.so.0.30.0
GStreamer=libgstreamer-1.0.so.0.1002.0
GTK+2=libgtk-x11-2.0.so.0.2400.31
GTK+3=libgtk-3.so.0.2200.5
OpenGL=libGL.so.1.2.0
Poppler=libpoppler.so.66.0.0
QT4=libQtCore.so.4.8.7
QT5=libQt5Core.so.5.7.1
SDL=libSDL-1.2.so.0.11.4
SQLite=libsqlite3.so.0.8.6

[Environment]
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DESKTOP_SESSION=xfce
DISPLAY=:0.0
GB_GUI=gb.qt4
GDMSESSION=xfce
GLADE_CATALOG_PATH=:
GLADE_MODULE_PATH=:
GLADE_PIXMAP_PATH=:
GTK2_RC_FILES=<home>/.gtkrc-2.0
GTK_MODULES=canberra-gtk-module
HOME=<home>
LANG=en_CA.utf8
LC_ADDRESS=en_CA.UTF-8
LC_IDENTIFICATION=en_CA.UTF-8
LC_MEASUREMENT=en_CA.UTF-8
LC_MONETARY=en_CA.UTF-8
LC_NAME=en_CA.UTF-8
LC_NUMERIC=en_CA.UTF-8
LC_PAPER=en_CA.UTF-8
LC_TELEPHONE=en_CA.UTF-8
LC_TIME=en_CA.UTF-8
LOGNAME=<user>
MAIL=/var/spool/mail/<user>
MOZ_PLUGIN_PATH=/usr/lib/mozilla/plugins
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
PWD=<home>
QT_QPA_PLATFORMTHEME=qt5ct
SAL_USE_VCLPLUGIN=gtk
SESSION_MANAGER=local/<hostname>:@/tmp/.ICE-unix/9931,unix/<hostname>:/tmp/.ICE-unix/9931
SHELL=/bin/bash
SHLVL=2
SSH_AGENT_PID=9936
SSH_AUTH_SOCK=/tmp/ssh-bUdChQqs4Zo0/agent.9935
TZ=:/etc/localtime
USER=<user>
XAUTHORITY=<home>/.Xauthority
XDG_CONFIG_DIRS=/etc/xdg
XDG_CURRENT_DESKTOP=XFCE
XDG_DATA_DIRS=/usr/local/share:/usr/share
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/<user>
XDG_MENU_PREFIX=xfce-
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SESSION_DESKTOP=xfce
XDG_SESSION_ID=c4
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session1
XDG_SESSION_TYPE=x11
XDG_VTNR=7
_=/usr/bin/gambas3







More information about the User mailing list