diff options
Diffstat (limited to 'src/net_unix')
| -rw-r--r-- | src/net_unix/udp.c | 15 | ||||
| -rw-r--r-- | src/net_unix/udp.h | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/net_unix/udp.c b/src/net_unix/udp.c index a701d48..79df4b0 100644 --- a/src/net_unix/udp.c +++ b/src/net_unix/udp.c @@ -12,6 +12,7 @@ #include <netdb.h> #include <string.h> #include <assert.h> +#include <fcntl.h> #define BUFSIZE 1000 @@ -149,6 +150,20 @@ sock_udp_t* connectUdpSocket(char *address, int port, int proto) return new; } +int setUdpSockNonBlock(sock_udp_t *p) +{ + int oldFlag; + + oldFlag = fcntl (p->sock, F_GETFL, 0); + + if( fcntl(p->sock, F_SETFL, oldFlag|O_NONBLOCK ) == -1 ) + { + return -1; + } + + return 0; +} + int readUdpSocket(sock_udp_t *src, sock_udp_t *dst, void *address, int len) { int addrlen; diff --git a/src/net_unix/udp.h b/src/net_unix/udp.h index e5fd648..a8d935f 100644 --- a/src/net_unix/udp.h +++ b/src/net_unix/udp.h @@ -22,6 +22,7 @@ extern sock_udp_t* newSockUdp(int proto); extern void destroySockUdp(sock_udp_t *p); extern sock_udp_t* bindUdpSocket(char *address, int port, int proto); extern sock_udp_t* connectUdpSocket(char *address, int port, int proto); +extern int setUdpSockNonBlock(sock_udp_t *p); extern int readUdpSocket(sock_udp_t *src, sock_udp_t *dst, void *address, int len); extern int writeUdpSocket(sock_udp_t *src, sock_udp_t *dst, void *address, int len); extern void getSockUdpIp(sock_udp_t *p, char *str_ip, int len); |