diff options
author | Diego Nehab <diego@tecgraf.puc-rio.br> | 2000-12-29 22:08:56 +0000 |
---|---|---|
committer | Diego Nehab <diego@tecgraf.puc-rio.br> | 2000-12-29 22:08:56 +0000 |
commit | 6f9d15b66027cef58441549f8ac0603ca42da0ac (patch) | |
tree | 563029b99fe26ed4c6ac5b2279fbaa1c78c0076f /src | |
parent | df9a7e548f83b0694d7e4096e004858a43ab8a28 (diff) | |
download | luasocket-6f9d15b66027cef58441549f8ac0603ca42da0ac.tar.gz luasocket-6f9d15b66027cef58441549f8ac0603ca42da0ac.tar.bz2 luasocket-6f9d15b66027cef58441549f8ac0603ca42da0ac.zip |
Simplified SIGPIPE treatment.
Changed some ints to size_ts.
Diffstat (limited to 'src')
-rw-r--r-- | src/luasocket.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/src/luasocket.c b/src/luasocket.c index ab44490..2216b90 100644 --- a/src/luasocket.c +++ b/src/luasocket.c | |||
@@ -325,7 +325,7 @@ static int net_accept(lua_State *L) | |||
325 | int client_tag, server_tag; | 325 | int client_tag, server_tag; |
326 | p_sock server; | 326 | p_sock server; |
327 | int client_sock = -1; | 327 | int client_sock = -1; |
328 | unsigned int client_len = sizeof(client_addr); | 328 | size_t client_len = sizeof(client_addr); |
329 | p_sock client; | 329 | p_sock client; |
330 | pop_tags(L, &client_tag, &server_tag); | 330 | pop_tags(L, &client_tag, &server_tag); |
331 | server = check_server(L, 1, server_tag); | 331 | server = check_server(L, 1, server_tag); |
@@ -364,7 +364,7 @@ static int net_bind(lua_State *L) | |||
364 | unsigned short port = (unsigned short) luaL_check_number(L, 2); | 364 | unsigned short port = (unsigned short) luaL_check_number(L, 2); |
365 | unsigned int backlog = (unsigned int) luaL_opt_number(L, 3, 1.0); | 365 | unsigned int backlog = (unsigned int) luaL_opt_number(L, 3, 1.0); |
366 | struct sockaddr_in server; | 366 | struct sockaddr_in server; |
367 | int server_size = sizeof(server); | 367 | size_t server_size = sizeof(server); |
368 | int client_tag, server_tag; | 368 | int client_tag, server_tag; |
369 | p_sock sock = create_tcpsock(); | 369 | p_sock sock = create_tcpsock(); |
370 | pop_tags(L, &client_tag, &server_tag); | 370 | pop_tags(L, &client_tag, &server_tag); |
@@ -687,20 +687,10 @@ static int sock_gc(lua_State *L) | |||
687 | static void handle_sigpipe(void); | 687 | static void handle_sigpipe(void); |
688 | static void handle_sigpipe(void) | 688 | static void handle_sigpipe(void) |
689 | { | 689 | { |
690 | struct sigaction old, new; | 690 | struct sigaction new; |
691 | bzero(&new, sizeof new); | 691 | memset(&new, 0, sizeof(new)); |
692 | new.sa_handler = SIG_IGN; | 692 | new.sa_handler = SIG_IGN; |
693 | sigaction(SIGPIPE, &new, &old); | 693 | sigaction(SIGPIPE, &new, NULL); |
694 | /* test if the signal had been before, and restore it if so */ | ||
695 | if (old.sa_handler != SIG_DFL) { | ||
696 | #ifdef _DEBUG | ||
697 | /* this is a somewhat dangerous situation. we can only hope the | ||
698 | ** installed signal handler understands that this signal can be | ||
699 | ** raised by a socket operation */ | ||
700 | printf("SIGPIPE ALREADY REDEFINED!!!\n"); | ||
701 | #endif | ||
702 | sigaction(SIGPIPE, &old, NULL); | ||
703 | } | ||
704 | } | 694 | } |
705 | #endif | 695 | #endif |
706 | 696 | ||
@@ -928,7 +918,7 @@ static int send_raw(p_sock sock, const char *data, int wanted, | |||
928 | return total; | 918 | return total; |
929 | } | 919 | } |
930 | #ifdef _DEBUG_BLOCK | 920 | #ifdef _DEBUG_BLOCK |
931 | printf("luasocket: sent %d bytes, %dms elapsed\n", put, time_since(start)); | 921 | printf("luasocket: sent %d, wanted %d, %dms elapsed\n", put, wanted, time_since(start)); |
932 | #endif | 922 | #endif |
933 | wanted -= put; | 923 | wanted -= put; |
934 | data += put; | 924 | data += put; |