@@ -514,7 +514,42 @@ namespace sys_net
514
514
ret = ioctlsocket (sock->s , FIONBIO, &mode);
515
515
break ;
516
516
}
517
-
517
+ case OP_SO_SNDBUF:
518
+ {
519
+ u32 sendbuff = *(u32 *)optval.get_ptr ();
520
+ ret = ::setsockopt (sock->s , SOL_SOCKET, SO_SNDBUF, (const char *)&sendbuff, sizeof (sendbuff));
521
+ break ;
522
+ }
523
+ case OP_SO_RCVBUF:
524
+ {
525
+ u32 recvbuff = *(u32 *)optval.get_ptr ();
526
+ ret = ::setsockopt (sock->s , SOL_SOCKET, SO_RCVBUF, (const char *)&recvbuff, sizeof (recvbuff));
527
+ break ;
528
+ }
529
+ case OP_SO_SNDTIMEO:
530
+ {
531
+ u32 sendtimeout = *(u32 *)optval.get_ptr ();
532
+ ret = ::setsockopt (sock->s , SOL_SOCKET, SO_SNDTIMEO, (char *)&sendtimeout, sizeof (sendtimeout));
533
+ break ;
534
+ }
535
+ case OP_SO_RCVTIMEO:
536
+ {
537
+ u32 recvtimeout = *(u32 *)optval.get_ptr ();
538
+ ret = ::setsockopt (sock->s , SOL_SOCKET, SO_RCVTIMEO, (char *)&recvtimeout, sizeof (recvtimeout));
539
+ break ;
540
+ }
541
+ case OP_SO_SNDLOWAT:
542
+ {
543
+ u32 sendlowmark = *(u32 *)optval.get_ptr ();
544
+ ret = ::setsockopt (sock->s , SOL_SOCKET, SO_SNDLOWAT, (char *)&sendlowmark, sizeof (sendlowmark));
545
+ break ;
546
+ }
547
+ case OP_SO_RCVLOWAT:
548
+ {
549
+ u32 recvlowmark = *(u32 *)optval.get_ptr ();
550
+ ret = ::setsockopt (sock->s , SOL_SOCKET, SO_RCVLOWAT, (char *)&recvlowmark, sizeof (recvlowmark));
551
+ break ;
552
+ }
518
553
default :
519
554
throw EXCEPTION (" Unknown socket option for Win32: 0x%x" , optname);
520
555
}
@@ -586,7 +621,7 @@ namespace sys_net
586
621
}
587
622
588
623
default :
589
- throw EXCEPTION (" Unknown TCP option for Win32 : 0x%x" , optname);
624
+ throw EXCEPTION (" Unknown TCP option for Unix : 0x%x" , optname);
590
625
}
591
626
}
592
627
#endif
0 commit comments