X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=comstack%2Fxmosi.c;h=3f6a9c20156672ea40c2bc1f9efe893b3f9aaabe;hb=a8b671f524437f17d856b567a5e3b4648c83fe6c;hp=c15263c5732574e419d904034355ef5a3776283a;hpb=832b2543074a15413097abfc0d9b7aca2c301b68;p=yaz-moved-to-github.git diff --git a/comstack/xmosi.c b/comstack/xmosi.c index c15263c..3f6a9c2 100644 --- a/comstack/xmosi.c +++ b/comstack/xmosi.c @@ -4,7 +4,22 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: xmosi.c,v $ - * Revision 1.2 1995-06-15 12:30:07 quinn + * Revision 1.7 1995-10-30 12:41:17 quinn + * Added hostname lookup for server. + * + * Revision 1.6 1995/09/29 17:12:00 quinn + * Smallish + * + * Revision 1.5 1995/09/28 10:24:32 quinn + * Windows changes + * + * Revision 1.4 1995/09/27 15:02:45 quinn + * Modified function heads & prototypes. + * + * Revision 1.3 1995/06/16 10:30:38 quinn + * Added REUSEADDR. + * + * Revision 1.2 1995/06/15 12:30:07 quinn * Added @ as hostname alias for INADDR ANY. * * Revision 1.1 1995/06/14 09:58:20 quinn @@ -91,6 +106,7 @@ int mosi_rcvconnect(COMSTACK h); int mosi_bind(COMSTACK h, void *address, int mode); int mosi_listen(COMSTACK h, char *addrp, int *addrlen); COMSTACK mosi_accept(COMSTACK h); +char *mosi_addrstr(COMSTACK h); typedef struct mosi_state { @@ -159,6 +175,7 @@ COMSTACK mosi_type(int blocking, int protocol) r->f_bind = mosi_bind; r->f_listen = mosi_listen; r->f_accept = mosi_accept; + r->f_addrstr = mosi_addrstr; if (!blocking) flags |= O_NONBLOCK; @@ -190,7 +207,7 @@ int hex2oct(char *hex, char *oct) * addressing specific to our hack of OSI transport. A sockaddr_in wrapped * up in a t_mosiaddr in a netbuf (on a stick). */ -struct netbuf *mosi_strtoaddr(const char *str) +struct netbuf MDF *mosi_strtoaddr(const char *str) { struct netbuf *ret = malloc(sizeof(struct netbuf)); struct sockaddr_in *add = malloc(sizeof(struct sockaddr_in)); @@ -323,7 +340,13 @@ int mosi_bind(COMSTACK h, void *address, int mode) { int res; struct t_bind bnd; + int one = 1; + if (setsockopt(h->iofile, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) < 0) + { + h->cerrno = CSYSERR; + return -1; + } if (mode == CS_SERVER) bnd.qlen = 3; else @@ -362,7 +385,7 @@ COMSTACK mosi_accept(COMSTACK h) if (h->state != CS_INCON) { - h->errno = CSOUTSTATE; + h->cerrno = CSOUTSTATE; return 0; } if (!(new = malloc(sizeof(*new)))) @@ -452,3 +475,8 @@ int mosi_close(COMSTACK h) free(h); return 0; } + +char *mosi_addrstr(COMSTACK h) +{ + return "osi:[UNIMPLEMENTED"; +}