X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/7312c5fd3b74fd9cad485121bc31fc501accd355..eeab3e6cade87c1fe0a5f3d93522e12ccb9ec2ab:/rpc/connection.cc?ds=inline diff --git a/rpc/connection.cc b/rpc/connection.cc index 6e865e8..db6a3ea 100644 --- a/rpc/connection.cc +++ b/rpc/connection.cc @@ -106,7 +106,7 @@ connection::compare(connection *another) } bool -connection::send(char *b, int sz) +connection::send(char *b, size_t sz) { lock ml(m_); waiters_++; @@ -138,7 +138,7 @@ connection::send(char *b, int sz) } else { //should be rare to need to explicitly add write callback PollMgr::Instance()->add_callback(fd_, CB_WRONLY, this); - while (!dead_ && wpdu_.solong >= 0 && wpdu_.solong < wpdu_.sz) { + while (!dead_ && wpdu_.solong != size_t_max && wpdu_.solong < wpdu_.sz) { send_complete_.wait(ml); } } @@ -166,7 +166,7 @@ connection::write_cb(int s) PollMgr::Instance()->del_callback(fd_, CB_RDWR); dead_ = true; } else { - VERIFY(wpdu_.solong >= 0); + VERIFY(wpdu_.solong != size_t_max); if (wpdu_.solong < wpdu_.sz) { return; } @@ -207,24 +207,24 @@ connection::read_cb(int s) bool connection::writepdu() { - VERIFY(wpdu_.solong >= 0); + VERIFY(wpdu_.solong != size_t_max); if (wpdu_.solong == wpdu_.sz) return true; if (wpdu_.solong == 0) { - int sz = htonl(wpdu_.sz); + uint32_t sz = htonl((uint32_t)wpdu_.sz); bcopy(&sz,wpdu_.buf,sizeof(sz)); } - int n = write(fd_, wpdu_.buf + wpdu_.solong, (wpdu_.sz-wpdu_.solong)); + ssize_t n = write(fd_, wpdu_.buf + wpdu_.solong, (wpdu_.sz-wpdu_.solong)); if (n < 0) { if (errno != EAGAIN) { jsl_log(JSL_DBG_1, "connection::writepdu fd_ %d failure errno=%d\n", fd_, errno); - wpdu_.solong = -1; + wpdu_.solong = size_t_max; wpdu_.sz = 0; } return (errno == EAGAIN); } - wpdu_.solong += n; + wpdu_.solong += (size_t)n; return true; } @@ -232,8 +232,8 @@ bool connection::readpdu() { if (!rpdu_.sz) { - int sz, sz1; - int n = read(fd_, &sz1, sizeof(sz1)); + uint32_t sz1; + ssize_t n = read(fd_, &sz1, sizeof(sz1)); if (n == 0) { return false; @@ -244,29 +244,29 @@ connection::readpdu() return false; } - if (n >0 && n!= sizeof(sz)) { + if (n > 0 && n != sizeof(sz1)) { jsl_log(JSL_DBG_OFF, "connection::readpdu short read of sz\n"); return false; } - sz = ntohl(sz1); + size_t sz = ntohl(sz1); if (sz > MAX_PDU) { char *tmpb = (char *)&sz1; - jsl_log(JSL_DBG_2, "connection::readpdu read pdu TOO BIG %d network order=%x %x %x %x %x\n", sz, + jsl_log(JSL_DBG_2, "connection::readpdu read pdu TOO BIG %lu network order=%x %x %x %x %x\n", sz, sz1, tmpb[0],tmpb[1],tmpb[2],tmpb[3]); return false; } rpdu_.sz = sz; VERIFY(rpdu_.buf == NULL); - rpdu_.buf = (char *)malloc(sz+sizeof(sz)); + rpdu_.buf = (char *)malloc(sz+sizeof(sz1)); VERIFY(rpdu_.buf); - bcopy(&sz1,rpdu_.buf,sizeof(sz)); - rpdu_.solong = sizeof(sz); + bcopy(&sz1,rpdu_.buf,sizeof(sz1)); + rpdu_.solong = sizeof(sz1); } - int n = read(fd_, rpdu_.buf + rpdu_.solong, rpdu_.sz - rpdu_.solong); + ssize_t n = read(fd_, rpdu_.buf + rpdu_.solong, rpdu_.sz - rpdu_.solong); if (n <= 0) { if (errno == EAGAIN) return true; @@ -276,11 +276,11 @@ connection::readpdu() rpdu_.sz = rpdu_.solong = 0; return (errno == EAGAIN); } - rpdu_.solong += n; + rpdu_.solong += (size_t)n; return true; } -tcpsconn::tcpsconn(chanmgr *m1, int port, int lossytest) +tcpsconn::tcpsconn(chanmgr *m1, unsigned int port, int lossytest) : mgr_(m1), lossy_(lossytest) { struct sockaddr_in sin;