Hi,

The round-trip-time client doesn't handle failures of the
socket_rt and bind_rt calls. This patch fixes it, similar
to the way the server does.

With friendly regards,
Takis

--
 K.U.Leuven, Mechanical Eng.,  Mechatronics & Robotics Research Group
 http://people.mech.kuleuven.ac.be/~pissaris/

Index: addons/examples/round-trip-time/client/rt_client.c
===================================================================
--- addons/examples/round-trip-time/client/rt_client.c	(revision 755)
+++ addons/examples/round-trip-time/client/rt_client.c	(working copy)
@@ -150,6 +150,7 @@
 
 int init_module(void)
 {
+    int                     ret = 0;
     rtos_time_t             cycle;
     unsigned int            local_ip;
     unsigned int            server_ip = rt_inet_aton(server_ip_s);
@@ -180,14 +181,21 @@
     rtos_fifo_create(&print_fifo, PRINT_FIFO, 8000);
 
     /* create rt-socket */
-    sock = socket_rt(AF_INET,SOCK_DGRAM,0);
+    if ((sock = socket_rt(AF_INET,SOCK_DGRAM,0)) < 0) {
+        printk("socket not created\n");
+        return -ENOMEM;
+    }
 
     /* bind the rt-socket to local_addr */
     memset(&local_addr, 0, sizeof(struct sockaddr_in));
     local_addr.sin_family = AF_INET;
     local_addr.sin_port = htons(RCV_PORT);
     local_addr.sin_addr.s_addr = local_ip;
-    bind_rt(sock, (struct sockaddr *)&local_addr, sizeof(struct sockaddr_in));
+    if ( (ret = bind_rt(sock, (struct sockaddr *)&local_addr, sizeof(struct sockaddr_in))) < 0) {
+        printk("can't bind rtsocket\n");
+        close_rt(sock);
+        return ret;
+    }
 
     /* set server-addr */
     memset(&server_addr, 0, sizeof(struct sockaddr_in));

Reply via email to