Add a call to find the queue-length so we can see how many I/O we have in flight...
[deb_libnfs.git] / lib / socket.c
index efe87393108d5038e37869f0d354f87aedeb0a06..d93acd80b717c9f4be0fab8168862bab3bdf6dbc 100644 (file)
@@ -315,7 +315,7 @@ int rpc_service(struct rpc_context *rpc, int revents)
 
        if (revents & POLLIN) {
                if (rpc_read_from_socket(rpc) != 0) {
-                       rpc_disconnect_requeue(rpc);
+                       rpc_disconnect_requeue(rpc);
                        return 0;
                }
        }
@@ -373,8 +373,12 @@ int rpc_connect_async(struct rpc_context *rpc, const char *server, int port, rpc
        rpc->connect_data = private_data;
 
        set_nonblocking(rpc->fd);
-
-       if (connect(rpc->fd, (struct sockaddr *)&s, socksize) != 0 && errno != EINPROGRESS) {
+#if defined(WIN32)
+       if (connect(rpc->fd, (struct sockaddr *)&s, socksize) == 0 && GetLastError() != WSAEINPROGRESS   )
+#else
+       if (connect(rpc->fd, (struct sockaddr *)&s, socksize) != 0 && errno != EINPROGRESS) 
+#endif
+       {
                rpc_set_error(rpc, "connect() to server failed");
                return -1;
        }               
@@ -510,3 +514,17 @@ struct sockaddr *rpc_get_recv_sockaddr(struct rpc_context *rpc)
 {
        return (struct sockaddr *)&rpc->udp_src;
 }
+
+int rpc_queue_length(struct rpc_context *rpc)
+{
+       int i=0;
+       struct rpc_pdu *pdu;
+
+       for(pdu = rpc->outqueue; pdu; pdu = pdu->next) {
+               i++;
+       }
+       for(pdu = rpc->waitpdu; pdu; pdu = pdu->next) {
+               i++;
+       }
+       return i;
+}