- attr = createEmptyList();
- recvNsdpPacket(s, &nc, attr, NULL);
+ err = poll(fds, 2, -1);
+ if (err < 0) {
+ perror("poll");
+ break;
+ } else if (err == 0) {
+ continue;
+ }
+
+ memset(&nc, 0, sizeof(struct nsdp_cmd));
+ nc.remote_addr.sin_family = AF_INET;
+
+ if (fds[0].revents & POLLIN) {
+ nc.remote_addr.sin_port = htons(CLIENT_PORT);
+ err = recvNsdpPacket(sw_sock, &nc, attr, NULL);
+ } else {
+ nc.remote_addr.sin_port = htons(SWITCH_PORT);
+ err = recvNsdpPacket(cl_sock, &nc, attr, NULL);
+ }
+
+ if (err < 0)
+ continue;