Ticket #972 (closed defect: fixed)

Opened 9 years ago

Last modified 9 years ago

setsockopt options compatibility on various platforms (thanks Yann, John Ridges, and Dan Arrhenius for the reports)

Reported by: bennylp Owned by: bennylp
Priority: normal Milestone: release-1.5
Component: pjlib Version: trunk
Keywords: Cc:
Backport to 1.x milestone: Backported:

Description

Some problems were reported on Windows platforms on various PJ_SOL_xxx constants that is used by pj_setsockopt() and pj_getsockopt() functions:

  1. PJ_SOL_IP is initialized with 0xffff if SOL_IP is not defined, for the reason that we thought it is not supported on Windows. A better alternative is to use IPPROTO_IP.
  1. Similarly PJ_SOL_TCP and PJ_SOL_UDP are also initialized with 0xffff if IPPROTO_TCP/IPPROTO_UDP are not defined. Some users reported that on some Platform SDKs these constants are not declared as macro but rather as enum values, causing them to be reverted back to 0xffff value.

Change History

comment:1 Changed 9 years ago by bennylp

  • Status changed from new to closed
  • Resolution set to fixed

In r2946:

  • set PJ_SOL_IP, PJ_SOL_TCP, and PJ_SOL_UDP to IPPROTO_IP, IPPROTO_TCP, and IPPROTO_UDP respectively on Windows
  • also added PJ_TCP_NODELAY and PJ_SO_REUSEADDR

comment:2 Changed 9 years ago by bennylp

In r2952:

  • fixed compilation problem with IPPROTO_IPV6 constant (thanks Robert Cichielo for the report)

comment:3 Changed 9 years ago by bennylp

In r2962:

  • fixed compilation error on Linux due to the introduction of PJ_TCP_NODELAY above. Thanks Dan Arrhenius for the report.

Note: everyone would need to re-run configure script

comment:4 Changed 9 years ago by bennylp

Fixed in r2964:

  • SOL_UDP is not set properly on Linux

comment:5 Changed 9 years ago by bennylp

  • Summary changed from setsockopt compatibility problems on Windows (thanks Yann and John Ridges for the reports) to setsockopt options compatibility on various platforms (thanks Yann, John Ridges, and Dan Arrhenius for the reports)

comment:6 Changed 9 years ago by bennylp

In r2982:

  • failed in pjlib-test because SOL_SOCKET is defined as 0xFFFF by Windows Platform SDK

comment:7 Changed 9 years ago by nanang

In r3016:

  • Removed PJ_SOL_SOCKET check in pjlib-test as it is defined as 0xffff on some platforms (e.g: win, mac).
Note: See TracTickets for help on using tickets.