From 96b83f1c80ed3c4c247e8f059a9a9c23f1cbd19a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ji=C5=99=C3=AD=20=C5=A0kr=C3=A1bal?= Date: Tue, 8 Mar 2005 14:16:12 +0000 Subject: [PATCH] - return ENOTCONN when client connection is closed --- org.glite.lb.server-bones/examples/srv_example.c | 41 +++++++++++++++++++----- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/org.glite.lb.server-bones/examples/srv_example.c b/org.glite.lb.server-bones/examples/srv_example.c index e897bc5..0a19ab4 100644 --- a/org.glite.lb.server-bones/examples/srv_example.c +++ b/org.glite.lb.server-bones/examples/srv_example.c @@ -21,8 +21,13 @@ int debug = 1; static int writen(int fd, char *ptr, int nbytes); static int readln(int fd, char *out, int nbytes); -static int echo(int, void *); -static int upper_echo(int, void *); + +static int new_conn(int, struct timeval *, void *); +static int reject(int); +static int disconnect(int, struct timeval *, void *); + +static int echo(int, struct timeval *, void *); +static int upper_echo(int, struct timeval *, void *); #define ECHO_PORT 9999 #define UPPER_ECHO_PORT 9998 @@ -31,8 +36,8 @@ static int upper_echo(int, void *); #define SRV_UPPER_ECHO 1 static struct glite_srvbones_service service_table[] = { - { "Echo Service", -1, NULL, echo, NULL, NULL }, - { "Upper Echo Service", -1, NULL, upper_echo, NULL, NULL } + { "Echo Service", -1, new_conn, echo, reject, disconnect }, + { "Upper Echo Service", -1, new_conn, upper_echo, reject, disconnect } }; int main(void) @@ -73,13 +78,15 @@ int main(void) exit(1); } + + glite_srvbones_set_param(GLITE_SBPARAM_SLAVES_COUNT, 1); glite_srvbones_run(NULL, service_table, sizofa(service_table), 1); return 0; } -int upper_echo(int fd, void *data) +int upper_echo(int fd, struct timeval *to, void *data) { int n, i; char line[80]; @@ -91,7 +98,7 @@ int upper_echo(int fd, void *data) return n; } else if ( n == 0 ) - return 0; + return ENOTCONN; for ( i = 0; i < n; i++ ) line[i] = toupper(line[i]); @@ -105,7 +112,7 @@ int upper_echo(int fd, void *data) return 0; } -int echo(int fd, void *data) +int echo(int fd, struct timeval *to, void *data) { int n; char line[80]; @@ -118,7 +125,7 @@ int echo(int fd, void *data) return n; } else if ( n == 0 ) - return 0; + return ENOTCONN; if ( writen(fd, line, n) != n ) { @@ -129,6 +136,24 @@ int echo(int fd, void *data) return 0; } +int new_conn(int conn, struct timeval *to, void *cdata) +{ + dprintf(("srv-bones example: new_conn handler\n")); + return 0; +} + +int reject(int conn) +{ + dprintf(("srv-bones example: reject handler\n")); + return 0; +} + +int disconnect(int conn, struct timeval *to, void *cdata) +{ + dprintf(("srv-bones example: disconnect handler\n")); + return 0; +} + int writen(int fd, char *ptr, int nbytes) { int nleft, nwritten; -- 1.8.2.3