-------- 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 : bugtrac...@gambaswiki.org
Pour : tmore...@ajm-software.com, g4m...@gmail.com

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




------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to