projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
The user can set the preferred query type (prefix, ccl, ..) with the
[yaz-moved-to-github.git]
/
comstack
/
tcpip.c
diff --git
a/comstack/tcpip.c
b/comstack/tcpip.c
index
04b6013
..
426f3ff
100644
(file)
--- a/
comstack/tcpip.c
+++ b/
comstack/tcpip.c
@@
-4,7
+4,13
@@
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: tcpip.c,v $
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: tcpip.c,v $
- * Revision 1.9 1996-02-10 12:23:11 quinn
+ * Revision 1.11 1996-02-23 10:00:39 quinn
+ * WAIS Work
+ *
+ * Revision 1.10 1996/02/20 12:52:11 quinn
+ * WAIS protocol support.
+ *
+ * Revision 1.9 1996/02/10 12:23:11 quinn
* Enablie inetd operations fro TCP/IP stack
*
* Revision 1.8 1995/11/01 13:54:27 quinn
* Enablie inetd operations fro TCP/IP stack
*
* Revision 1.8 1995/11/01 13:54:27 quinn
@@
-122,7
+128,11
@@
int tcpip_listen(COMSTACK h, char *addrp, int *addrlen);
COMSTACK tcpip_accept(COMSTACK h);
char *tcpip_addrstr(COMSTACK h);
COMSTACK tcpip_accept(COMSTACK h);
char *tcpip_addrstr(COMSTACK h);
-int completeBER(unsigned char *buf, int len);
+/*
+ * Determine length/completeness of incoming packages
+ */
+int completeBER(unsigned char *buf, int len); /* from the ODR module */
+int completeWAIS(unsigned char *buf, int len); /* from waislen.c */
#ifdef TRACE_TCPIP
#define TRC(x) x
#ifdef TRACE_TCPIP
#define TRC(x) x
@@
-140,9
+150,11
@@
typedef struct tcpip_state
int written; /* -1 if we aren't writing */
int towrite; /* to verify against user input */
int written; /* -1 if we aren't writing */
int towrite; /* to verify against user input */
+ int (*complete)(unsigned char *buf, int len); /* length/completeness */
} tcpip_state;
/*
} tcpip_state;
/*
+ * This function is always called through the cs_create() macro.
* s >= 0: socket has already been established for us.
*/
COMSTACK tcpip_type(int s, int blocking, int protocol)
* s >= 0: socket has already been established for us.
*/
COMSTACK tcpip_type(int s, int blocking, int protocol)
@@
-218,6
+230,10
@@
COMSTACK tcpip_type(int s, int blocking, int protocol)
state->altbuf = 0;
state->altsize = state->altlen = 0;
state->towrite = state->written = -1;
state->altbuf = 0;
state->altsize = state->altlen = 0;
state->towrite = state->written = -1;
+ if (protocol == PROTO_WAIS)
+ state->complete = completeWAIS;
+ else
+ state->complete = completeBER;
p->timeout = COMSTACK_DEFAULT_TIMEOUT;
TRC(fprintf(stderr, "Created new TCPIP comstack\n"));
p->timeout = COMSTACK_DEFAULT_TIMEOUT;
TRC(fprintf(stderr, "Created new TCPIP comstack\n"));
@@
-257,7
+273,8
@@
int tcpip_more(COMSTACK h)
{
tcpip_state *sp = h->private;
{
tcpip_state *sp = h->private;
- return sp->altlen && completeBER((unsigned char *) sp->altbuf, sp->altlen);
+ return sp->altlen && (*sp->complete)((unsigned char *) sp->altbuf,
+ sp->altlen);
}
/*
}
/*
@@
-353,7
+370,7
@@
int tcpip_listen(COMSTACK h, char *raddr, int *addrlen)
COMSTACK tcpip_accept(COMSTACK h)
{
COMSTACK new;
COMSTACK tcpip_accept(COMSTACK h)
{
COMSTACK new;
- tcpip_state *state;
+ tcpip_state *state, *st = h->private;
#ifdef WINDOWS
unsigned long tru = 1;
#endif
#ifdef WINDOWS
unsigned long tru = 1;
#endif
@@
-385,6
+402,7
@@
COMSTACK tcpip_accept(COMSTACK h)
state->altbuf = 0;
state->altsize = state->altlen = 0;
state->towrite = state->written = -1;
state->altbuf = 0;
state->altsize = state->altlen = 0;
state->towrite = state->written = -1;
+ state->complete = st->complete;
new->state = CS_DATAXFER;
h->state = CS_IDLE;
return new;
new->state = CS_DATAXFER;
h->state = CS_IDLE;
return new;
@@
-417,7
+435,7
@@
int tcpip_get(COMSTACK h, char **buf, int *bufsize)
sp->altbuf = tmpc;
sp->altsize = tmpi;
}
sp->altbuf = tmpc;
sp->altsize = tmpi;
}
- while (!(berlen = completeBER((unsigned char *)*buf, hasread)))
+ while (!(berlen = (*sp->complete)((unsigned char *)*buf, hasread)))
{
if (!*bufsize)
{
{
if (!*bufsize)
{