Changeset 691:78b665400097 in freeDiameter for libfdcore/sctp.c
- Timestamp:
- Jan 20, 2011, 7:44:27 PM (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libfdcore/sctp.c
r662 r691 822 822 823 823 /* Set the socket options */ 824 CHECK_FCT_DO( ret = fd_setsockopt_prebind(*sock), goto fail);824 CHECK_FCT_DO( ret = fd_setsockopt_prebind(*sock), goto out ); 825 825 826 826 /* Create the array of addresses, add first the configured addresses, then the discovered, then the other ones */ 827 CHECK_FCT_DO( ret = add_addresses_from_list_mask(&sar.buf, &size, &count, family, htons(port), list, EP_FL_CONF, EP_FL_CONF ), goto fail);828 CHECK_FCT_DO( ret = add_addresses_from_list_mask(&sar.buf, &size, &count, family, htons(port), list, EP_FL_CONF | EP_FL_DISC, EP_FL_DISC ), goto fail);829 CHECK_FCT_DO( ret = add_addresses_from_list_mask(&sar.buf, &size, &count, family, htons(port), list, EP_FL_CONF | EP_FL_DISC, 0 ), goto fail);827 CHECK_FCT_DO( ret = add_addresses_from_list_mask(&sar.buf, &size, &count, family, htons(port), list, EP_FL_CONF, EP_FL_CONF ), goto out ); 828 CHECK_FCT_DO( ret = add_addresses_from_list_mask(&sar.buf, &size, &count, family, htons(port), list, EP_FL_CONF | EP_FL_DISC, EP_FL_DISC ), goto out ); 829 CHECK_FCT_DO( ret = add_addresses_from_list_mask(&sar.buf, &size, &count, family, htons(port), list, EP_FL_CONF | EP_FL_DISC, 0 ), goto out ); 830 830 831 831 /* Try connecting */ … … 866 866 /* Some errors are expected, we log at different level */ 867 867 TRACE_DEBUG( lvl, "sctp_connectx returned an error: %s", strerror(ret)); 868 goto fail;868 goto out; 869 869 } 870 870 … … 872 872 873 873 /* Set the remaining sockopts */ 874 CHECK_FCT_DO( ret = fd_setsockopt_postbind(*sock, 1), goto fail_deco ); 875 876 /* Done! */ 874 CHECK_FCT_DO( ret = fd_setsockopt_postbind(*sock, 1), 875 { 876 CHECK_SYS_DO( shutdown(*sock, SHUT_RDWR), /* continue */ ); 877 } ); 878 879 out: 880 ; 877 881 pthread_cleanup_pop(0); 878 return 0; 879 880 fail_deco: 881 CHECK_SYS_DO( shutdown(*sock, SHUT_RDWR), /* continue */ ); 882 fail: 883 if (*sock > 0) { 884 CHECK_SYS_DO( close(*sock), /* continue */ ); 885 *sock = -1; 886 } 887 free(sar.buf); 882 883 if (ret) { 884 if (*sock > 0) { 885 CHECK_SYS_DO( close(*sock), /* continue */ ); 886 *sock = -1; 887 } 888 free(sar.buf); 889 } 888 890 return ret; 889 891 }
Note: See TracChangeset
for help on using the changeset viewer.