cvs commit: src/sys/netinet sctp.h sctp_output.c sctp_structs.h sctp_usrreq.c sctputil.c

Randall Stewart rrs at FreeBSD.org
Sun Dec 9 12:23:48 PST 2007


rrs         2007-12-09 20:23:47 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_7)
    sys/netinet          sctp.h sctp_output.c sctp_structs.h 
                         sctp_usrreq.c sctputil.c 
  Log:
     - Found a problem in non-blocking sends. When
       sending, once the locks are all unlocked to
       do the copy's in, its possible that other
       events could then raise the number of bytes
       outstanding pushing it so not all the message
       would fit. This would then cause us to send
       only part of the message. This fix makes it
       so we keep a "reserved" amount that can be
       kept in mind when making calculations to send.
     - rcv msg args with a NULL/NULL for to/tolen will return
       an error incorrectly for the 1-2-1 model.
     - We were not doing 0 len return correctly and not
       setting socantrcv() more correctly. Previouly we "fixed"
       this area by taking out the socantrcv()
       since we then could not get the data out. The correct fix
       is to still flag the socket but alow a by-pass route to
       continue to read until all data is consumed.
     - Fix the initial buf calculation to be more friendly, calc is
       the same but we use different variable to make it easier
       amongst the different code versions.
     - Signedness issue with one of the new var's (this is an issue
       mainly in apple but with the right -Wall it could effect us too).
     - optimize the initialization of the SB max variables.
     - Missing lock(s) when sending data and moving it to the
       outqueue.
     - If a mbuf alloc fails during moving to outqueue the
       reassembly of the old mbuf chain was incorrect.
     - some_taken becomes a counter in sctputil.c instead of a set to 1.
     - Fix a panic to be only under invarients and have a proper recovery
       in reading messages.
     - msg_flags needed to be set to the value collected not or'd.
     - More fixes for lock misses on the transfer of data to
       the sent_queue. Sometimes I wonder why any code
       ever works   :-)
     - Fix the pad of the last mbuf routine, It was working improperly
       on non-4 byte aligned chunks which could cause memory overruns.
  Approved by:    re at freebsd.org(gnn)
  
  Revision  Changes    Path
  1.21.2.1  +9 -7      src/sys/netinet/sctp.h
  1.58.2.3  +221 -175  src/sys/netinet/sctp_output.c
  1.25.2.2  +1 -0      src/sys/netinet/sctp_structs.h
  1.48.2.3  +6 -1      src/sys/netinet/sctp_usrreq.c
  1.65.2.4  +20 -12    src/sys/netinet/sctputil.c


More information about the cvs-src mailing list