RSPlib Discussions

Text archives Help


[RSPlib-Discusssion] ext_select() does not react


Chronological Thread 
  • From: "Marjan Bozinovski" <marjanb AT cpk.auc.dk>
  • To: <rsplib-discussion AT sctp.de>
  • Subject: [RSPlib-Discusssion] ext_select() does not react
  • Date: Tue Nov 5 14:17:01 2002
  • List-id: RSPlib Discussions <rsplib-discussion.sctp.de>

Hi all,
 
I have another problem concerning an SCTP association establishment. The scenario is very basic:
 
SCTP client --> SCTP server
 
I only want to make these endpoints communicate on the SCTP layer. In addition, I will show just the relevant code lines of both programs. So, I have the following code on the client side (taken from examplepu.c):

/*Client side*/
//**************
ListenSocketFamily   = AF_INET6;
ListenSocketProtocol = IPPROTO_SCTP;
ListenSocketType     = SOCK_STREAM;
 
//saddr contains the IP address of the server; I am ommitting that step here
socketnumber = ext_socket(ListenSocketFamily, ListenSocketType, ListenSocketProtocol);
setNonBlocking(socketnumber);
result = ext_connect(socketnumber, (struct sockaddr*)&saddr, getSocklen((struct sockaddr*)&saddr));
FD_ZERO(&fdset);
FD_SET(socketnumber,&fdset);
timeout.tv_sec  = ConnectTimeout / (card64)1000000;
timeout.tv_usec = ConnectTimeout % (card64)1000000;
result = ext_select(1 + socketnumber, &fdset, &fdset, &fdset, &timeout);
//****************

 
The code of server side is as follows (taken from examplepe.c):

/*Server side*/
//****************
ListenSocketFamily   = AF_INET6;
ListenSocketProtocol = IPPROTO_SCTP;
ListenSocketType     = SOCK_STREAM;
 
ListenSocket = ext_socket(ListenSocketFamily, ListenSocketType, ListenSocketProtocol);
setNonBlocking(ListenSocket);
 
memset((void*)&localAddress,0,sizeof(localAddress));
((struct sockaddr*)&localAddress)->sa_family = ListenSocketFamily;
setPort((struct sockaddr*)&localAddress,ListenPort);
 
if(bindplus(ListenSocket,(struct sockaddr_storage*)&localAddress,1) == false) {
     perror("Unable to bind application socket");
     cleanUp();
     exit(1);
   }
 
if(ListenSocketType != SOCK_DGRAM) {
     if(ext_listen(ListenSocket,5) < 0) {
       perror("Unable to set application socket to listen mode");
       cleanUp();
       exit(1);
     }
}
//****************

 
I first run the server and then the client. The server successfully creates a socket. The client successfully sends an INIT. With debugging on, here is the output:

adding parent 0x8470244 (SCTPSocket::ReadUpdateCondition) to 0x8470128 (SCTPSocket::EstablishCondition)
adding parent 0x8470244 (SCTPSocket::ReadUpdateCondition) to 0x847000c (SCTPSocket::GlobalQueueCondition)
adding parent 0xbfbfbe54 (ext_select::GlobalCondition) to 0xbfbfbf70 (ext_select::ReadCondition)
adding parent 0xbfbfbe54 (ext_select::GlobalCondition) to 0xbfbfc08c (ext_select::WriteCondition)
adding parent 0xbfbfbe54 (ext_select::GlobalCondition) to 0xbfbfc1a8 (ext_select::ExceptCondition)select: adding FD 1021 for read
adding parent 0xbfbfbf70 (ext_select::ReadCondition) to 0x8470244 (SCTPSocket::ReadUpdateCondition)
select: waiting...
select: wake-up
Condition 0 (Type 1021, FD 134871355) not fired
removing parent 0xbfbfbf70 (ext_select::ReadCondition) to 0x8470244 (SCTPSocket::ReadUpdateCondition)

 
On Ethereal, it is seen that the client really sends an INIT chunk to the server, but the server does not react anyhow. I guess the problem is at the server side. I don't understand why the server does not see the SCTP packet coming from the client.
 
Best regards,
Marjan



Archive powered by MHonArc 2.6.19+.

Top of page