- From: Thomas Dreibholz <dreibh AT exp-math.uni-essen.de>
- To: "Marjan Bozinovski" <marjanb AT cpk.auc.dk>, <rsplib-discussion AT sctp.de>
- Subject: Re: [RSPlib-Discusssion] fail-over problems
- Date: Thu Sep 12 17:57:01 2002
- List-id: RSPlib Discussions <rsplib-discussion.sctp.de>
- Organization: University of Essen, Institute for Experimental Mathematics
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Am Donnerstag, 12. September 2002 15:20 schrieb Marjan Bozinovski:
>
I understand that a simpler program can facilitate the debugging but I
>
couldn't do that. On the other hand, today I think at least I localized the
>
problem. It seems that it has something to do with rspSelect() and the
>
socket opened by connectToPoolElement().
>
>
I will outline a piece of the pseudo code:
>
>
1. First I start with:
>
>
beginLogging();
>
initAll();
>
connectToPoolElement();
>
//as a result, a global DataSocket is created which is nonzero. This is
>
the same as in examplepu().
>
>
2. I send some data 'buffer'.
>
>
sendToPoolElement(buffer);
>
//this is successfully transmitted as I can see with Ethereal. Also,
>
the SCTP receiver responds back with SACK + echoed 'buffer'.
>
>
3. I start listening to incoming messages:
>
>
FD_ZERO(&readfdset);
>
FD_SET(DataSocket, &readfdset);
>
>
timeout.tv_sec = 2;
>
timeout.tv_usec = 0;
>
>
result = rspSelect(DataSocket + 1, &readfdset, NULL, NULL, &timeout);
>
//exactly as in the examplepu();
>
>
After this I always get result=0, there are no incoming messages at
>
DataSocket.
>
Why? I am supposed to receive the echoed message from the echo_server.
>
Where do I make the mistake?
This looks okay. Try activating #define PRINT_SELECT in line 48 of
sctpsocketwrapper.cc; #define PRINT_NOTIFICATIONS, #define
PRINT_ARRIVENOTIFICATION and #define PRINT_PIPE in sctpsocketmaster.cc, all
#defines for PRINT_ except the both *_AUTOCLOSE* in sctpsocket.cc, #define
PRINT_SHUTDOWN in sctpassociation.cc. Turn on full logging for your rsplib
application (-loglevel=9, -logcolor=off; see examplepe.c/examplepu.c for how
to set it). Then, reproduce the problem and check if sctplib/socketapi/rsplib
recognise the data reception.
If everything works, you should see a Data Arrive notification by sctplib,
which is handled by the socket API in the callback function
SCTPSocketMaster::dataArriveNotif(). This function calls
SCTPSocketMaster::addNotification(), which finds out the association or
socket pointer and fires a condition to wake up the thread calling
ext_select() (called by rspSelect()). Furthermore, it sets the boolean
ReadReady of the association or socket. This boolean is necessary if the data
is received *before* rspSelect() (calls ext_select()) is called. Then,
ext_select() immediately returns with the corresponding read FD set.
Best regards
- --
=======================================================================
Dipl.-Inform. Thomas Dreibholz
University of Essen, Room ES210
Inst. for Experimental Mathematics Ellernstraße 29
Computer Networking Technology Group D-45326 Essen/Germany
- -----------------------------------------------------------------------
E-Mail:
dreibh AT exp-math.uni-essen.de
Homepage:
http://www.exp-math.uni-essen.de/~dreibh
=======================================================================
- -----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: Weitere Infos: siehe
http://www.gnupg.org
mQGiBDr2cOgRBAC71Xhy1yzNTBxnousyxwtZ+zxRQJIfkDUQ8Yry5/rdoRkUldnE
VQUNX9owxKKwA40DsKMX5lfPIgfPpefqnSOx1/XOtjpffkF8+FY8ncU/LKvHPPw3
oNXzFAr8F6NqpJAIbp8eW6DlfraXiJFZk0D6sZyIk9XDqTY01+Dn5WmAewCg4Szj
r52geHYk+6n83yfVqw8+c3MD/A9d4ylhJikTHzbL83HTO7WozqlGtZq0rwGY+JIq
wPAaRAdBnu0brQz7xtfTZrvxA6v3sYb73bpuosaQNtg1K5Z0l0fbJQxls7wCdSC4
GmkXyl64c1bPiGMHu7WVE85mwdm4KyD7qELnnNKZoagFgK1HNYFJtuUDYQ3ihBQq
k0VnBACaqJ4k/VJYPQvuWy0fppX+Ultyqz2rrHqqVvaSotjc8muxwM0OL42ZCjL1
scuFb1TonojymUFa1nqe6uYU5Owjh2CRfs5+TnMUO7S7vXQRQgWPffIE7kJqL46G
S79MmHXVWwmO1WMpJooTlsCUv+J+pAWpYu5nJY4X/s+1DXSA9LQvVGhvbWFzIERy
ZWliaG9seiA8ZHJlaWJoQGV4cC1tYXRoLnVuaS1lc3Nlbi5kZT6IVwQTEQIAFwUC
OvZw6AULBwoDBAMVAwIDFgIBAheAAAoJEN9gW7B2Dy1l6BcAnRhM7hgy3qOLDKps
qIY88XZaMjMqAKDHqpiM/8CFpti9TKeIP/mRbva/3rkCDQQ69nD8EAgApETE6wER
FSA5YMQvoqNPYpf8W3y+u+BJvD2QMdKXFy79XnYCoOB26q0JK5gGw1GTB39ANOpc
3x5dkSNDiJptntB9DX7SEb1V+GU62XZOhju6o4GbLlhRsy40SVvzZ/RldkoYeCRH
1JghU7EkGsn8RcLuRFj7AgW+bWkIyC3NCGZN+mdc/mmRxYqeFpMQv2+Xnb1EuCk6
jqDJL6IjVKueYZD5XtKXW+QAj1UlRo9vGpNLs7oZz3QahEgf0S5Cn9eLp2JRr94D
FVoInZwziOWyEJ8BrJoydDgCAb/5eEdrAc+7ibuPSOnOxVH8ae9zyNbdimSJGDt1
pnfEz/Cw3cYYvwADBwf/bV9iJO22zTJaB5Sz8dzbQfwaa55fugi7DvPOe5eiE1p9
/W+uPJTYZ7WQxarM8q/h8BztwOAfeUKztzoGSVvEfxha8Wnvz/3rLWLK1Ok+v9ZV
ElrAYmJbbEci1Lmk1vXwmjcYoojYl/25mhkvucg8zVO8WfNYCwBUkGUGUj+SQpbf
xEt80dyGm6KFv9XO1fAzlUXkWBODZ4vDPNRY+Ay4evAFkbfKFgHXMUBvtXlGfuSQ
pTRXNt0mfRVZ4OeeIKbPdCI8DX5ND9+cIWEQJ2APgWta+h61kwJ5c7k2xxabbYt6
v9jTzPr57yvVle4fOV6ExUeCcFaRIzvX+87FMoac+YhGBBgRAgAGBQI69nD8AAoJ
EN9gW7B2Dy1lPpwAnR3YQYZRN4WouZwLcGpfMfH2X5RVAKDCa7d6Hwhoa7DrPaTA
P/965IPybA==
=g36Q
- -----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.4 (GNU/Linux)
Comment: For info see
http://www.gnupg.org
iD8DBQE9gLfy32BbsHYPLWURAn4ZAKC97NEtJEbGoYbQ0ezN7BDSUAx+0gCeMteO
lR5WVky/0b8fEuWi9Za3bqg=
=8Skq
-----END PGP SIGNATURE-----
Archive powered by MHonArc 2.6.19+.