diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-10-22 16:56:07 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-10-22 16:56:07 -0700 |
commit | 9a81d7460fdb16f4e77712e5381d9db8781f5ae6 (patch) | |
tree | 43b05169535fe33e65ecbf61f3fb3ada5f75ed52 /091socket.cc | |
parent | 22f4b76344b2d639cbfcaad56ed681670d436548 (diff) | |
download | mu-9a81d7460fdb16f4e77712e5381d9db8781f5ae6.tar.gz |
3561
Diffstat (limited to '091socket.cc')
-rw-r--r-- | 091socket.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/091socket.cc b/091socket.cc index 74626853..bd3f4ed6 100644 --- a/091socket.cc +++ b/091socket.cc @@ -218,6 +218,7 @@ case _READ_FROM_SOCKET: { } :(before "End Primitive Recipe Implementations") case _READ_FROM_SOCKET: { + cerr << "$read-from-socket\n"; long long int x = static_cast<long long int>(ingredients.at(0).at(0)); socket_t* socket = reinterpret_cast<socket_t*>(x); // 1. we'd like to simply read() from the socket @@ -227,19 +228,22 @@ case _READ_FROM_SOCKET: { // 3. but poll() will block on EOF, so only use poll() on the very first // $read-from-socket on a socket if (!socket->polled) { - socket->polled = true; pollfd p; bzero(&p, sizeof(p)); p.fd = socket->fd; p.events = POLLIN | POLLHUP; - if (poll(&p, /*num pollfds*/1, /*no timeout*/-1) <= 0) { + if (poll(&p, /*num pollfds*/1, /*timeout*/100/*ms*/) <= 0) { raise << maybe(current_recipe_name()) << "error in $read-from-socket\n" << end(); products.resize(2); products.at(0).push_back(0); products.at(1).push_back(false); break; } + cerr << "poll output: " << p.revents << '\n'; + cerr << "setting socket->polled\n"; + socket->polled = true; } + cerr << "$read-from-socket " << x << " continuing\n"; int bytes = static_cast<int>(ingredients.at(1).at(0)); char* contents = new char[bytes]; bzero(contents, bytes); |