瀏覽代碼

evapi: handle return code for fcntl

Daniel-Constantin Mierla 8 年之前
父節點
當前提交
c0125e049f
共有 1 個文件被更改,包括 10 次插入1 次删除
  1. 10 1
      src/modules/evapi/evapi_dispatch.c

+ 10 - 1
src/modules/evapi/evapi_dispatch.c

@@ -591,6 +591,7 @@ int evapi_run_dispatcher(char *laddr, int lport)
 	struct ev_io io_server;
 	struct ev_io io_notify;
 	int yes_true = 1;
+	int fflags = 0;
 
 	LM_DBG("starting dispatcher processing\n");
 
@@ -619,7 +620,15 @@ int evapi_run_dispatcher(char *laddr, int lport)
 		return -1;
 	}
 	/* set non-blocking flag */
-	fcntl(evapi_srv_sock, F_SETFL, fcntl(evapi_srv_sock, F_GETFL) | O_NONBLOCK);
+	fflags = fcntl(evapi_srv_sock, F_GETFL);
+	if(fflags<0) {
+		LM_ERR("failed to get the srv socket flags\n");
+		return -1;
+	}
+	if (fcntl(evapi_srv_sock, F_SETFL, fflags | O_NONBLOCK)<0) {
+		LM_ERR("failed to set srv socket flags\n");
+		return -1;
+	}
 
 	bzero(&evapi_srv_addr, sizeof(evapi_srv_addr));
 	evapi_srv_addr.sin_family = h->h_addrtype;