--- libaitrpc/src/srv.c 2015/07/19 23:40:40 1.27.2.4 +++ libaitrpc/src/srv.c 2015/07/22 15:07:10 1.27.2.6 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: srv.c,v 1.27.2.4 2015/07/19 23:40:40 misho Exp $ +* $Id: srv.c,v 1.27.2.6 2015/07/22 15:07:10 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -524,7 +524,7 @@ rxUDPPacket(sched_task_t *task) /* receive connect packet */ AIT_SET_BUF(&b, NULL, srv->srv_netbuf); - salen = sa.ss.ss_len = (u_char) sizeof(sockaddr_t); + salen = sa.ss.ss_len = (u_char) MIN(sizeof(sockaddr_t), 0xff); rlen = recvfrom(TASK_FD(task), AIT_GET_BUF(&b), AIT_LEN(&b), 0, &sa.sa, &salen); rpc = (struct tagRPCCall*) AIT_GET_BUF(&b); if (rlen < sizeof(struct tagRPCCall)) @@ -664,7 +664,7 @@ rxRAWPacket(sched_task_t *task) /* receive connect packet */ AIT_SET_BUF(&b, NULL, srv->srv_netbuf); - salen = sa.ss.ss_len = (u_char) sizeof(sockaddr_t); + salen = sa.ss.ss_len = (u_char) MIN(sizeof(sockaddr_t), 0xff); rlen = recvfrom(TASK_FD(task), AIT_GET_BUF(&b), AIT_LEN(&b), 0, &sa.sa, &salen); if (sa.sa.sa_family == AF_INET) { struct ip *h; @@ -1379,10 +1379,10 @@ rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv) srv->srv_blob.kill = 1; - schedEnd(&srv->srv_blob.root); - if (srv->srv_blob.server.cli_sa.sa.sa_family == AF_LOCAL) unlink(srv->srv_blob.server.cli_sa.sun.sun_path); + + schedEnd(&srv->srv_blob.root); } /* @@ -1607,16 +1607,16 @@ rpc_srv_endServer(rpc_srv_t ** __restrict psrv) /* if send kill to blob server */ rpc_srv_endBLOBServer(*psrv); /* wait for BLOB server done */ - while ((*psrv)->srv_blob.root) + while (*(&(*psrv)->srv_blob.root)) usleep(1000); (*psrv)->srv_kill = 1; sleep(RPC_SCHED_POLLING); - schedEnd(&(*psrv)->srv_root); - if ((*psrv)->srv_server.cli_sa.sa.sa_family == AF_LOCAL) unlink((*psrv)->srv_server.cli_sa.sun.sun_path); + + schedEnd(&(*psrv)->srv_root); pthread_mutex_destroy(&(*psrv)->srv_funcs.mtx); e_free(*psrv);