| 587 | |
| 588 | } |
| 589 | int setsockopt(int fd, int level, int option_name, |
| 590 | const void *option_value, socklen_t option_len) |
| 591 | { |
| 592 | HOOK_SYS_FUNC( setsockopt ); |
| 593 | |
| 594 | if( !co_is_enable_sys_hook() ) |
| 595 | { |
| 596 | return g_sys_setsockopt_func( fd,level,option_name,option_value,option_len ); |
| 597 | } |
| 598 | rpchook_t *lp = get_by_fd( fd ); |
| 599 | |
| 600 | if( lp && SOL_SOCKET == level ) |
| 601 | { |
| 602 | struct timeval *val = (struct timeval*)option_value; |
| 603 | if( SO_RCVTIMEO == option_name ) |
| 604 | { |
| 605 | memcpy( &lp->read_timeout,val,sizeof(*val) ); |
| 606 | } |
| 607 | else if( SO_SNDTIMEO == option_name ) |
| 608 | { |
| 609 | memcpy( &lp->write_timeout,val,sizeof(*val) ); |
| 610 | } |
| 611 | } |
| 612 | return g_sys_setsockopt_func( fd,level,option_name,option_value,option_len ); |
| 613 | } |
| 614 | |
| 615 | |
| 616 | int fcntl(int fildes, int cmd, ...) |
no test coverage detected