Skip to content
This repository was archived by the owner on Jun 5, 2019. It is now read-only.

Commit 11e6037

Browse files
committed
Merge pull request #190 from mortezag/fixLinger
Set error on LINGER and DONTLINGER socket options
2 parents 6fe029c + 3916703 commit 11e6037

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

DeviceCode/pal/lwip_1_4_1_os/SocketsDriver/lwIP__Sockets.cpp

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -562,13 +562,28 @@ int LWIP_SOCKETS_Driver::SetSockOpt( SOCK_SOCKET socket, int level, int optname,
562562
nativeOptionName = GetNativeSockOption(optname);
563563

564564
switch(optname)
565-
{
565+
{
566+
// LINGER is not implemented in LWIP
567+
case SOCK_SOCKO_LINGER:
568+
if (*(int*)optval)
569+
{
570+
errno = SOCK_ENOPROTOOPT;
571+
return SOCK_SOCKET_ERROR;
572+
}
573+
return 0;
574+
case SOCK_SOCKO_DONTLINGER:
575+
if (!*(int*)optval)
576+
{
577+
errno = SOCK_ENOPROTOOPT;
578+
return SOCK_SOCKET_ERROR;
579+
}
580+
return 0;
581+
566582
// ignore this item to enable http to work
567583
case SOCK_SOCKO_REUSEADDRESS:
568584
return 0;
569585

570586
case SOCK_SOCKO_EXCLUSIVEADDRESSUSE:
571-
case SOCK_SOCKO_DONTLINGER:
572587
nativeIntValue = !*(int*)optval;
573588
pNativeOptionValue = (char*)&nativeIntValue;
574589
break;
@@ -610,6 +625,18 @@ int LWIP_SOCKETS_Driver::GetSockOpt( SOCK_SOCKET socket, int level, int optname,
610625
case SOCK_SOL_SOCKET:
611626
nativeLevel = SOL_SOCKET;
612627
nativeOptionName = GetNativeSockOption(optname);
628+
switch(optname)
629+
{
630+
// LINGER is not implemented in LWIP
631+
case SOCK_SOCKO_LINGER:
632+
*optval = 0;
633+
return 0;
634+
case SOCK_SOCKO_DONTLINGER:
635+
*optval = 1;
636+
return 0;
637+
default:
638+
break;
639+
}
613640
break;
614641
default:
615642
nativeLevel = level;
@@ -625,9 +652,8 @@ int LWIP_SOCKETS_Driver::GetSockOpt( SOCK_SOCKET socket, int level, int optname,
625652
{
626653
case SOCK_SOL_SOCKET:
627654
switch(optname)
628-
{
655+
{
629656
case SOCK_SOCKO_EXCLUSIVEADDRESSUSE:
630-
case SOCK_SOCKO_DONTLINGER:
631657
*optval = !(*(int*)optval != 0);
632658
break;
633659

0 commit comments

Comments
 (0)