but careful when retransmitting timed segment
SCCS-vsn: sys/netinet/tcp_input.c 6.5
SCCS-vsn: sys/netinet/tcp_output.c 6.4
SCCS-vsn: sys/netinet/tcp_timer.c 6.3
-/* tcp_input.c 6.4 84/08/29 */
+/* tcp_input.c 6.5 84/10/18 */
#include "param.h"
#include "systm.h"
#include "param.h"
#include "systm.h"
tp->t_template = tcp_template(tp);
if (tp->t_template == 0) {
in_pcbdisconnect(inp);
tp->t_template = tcp_template(tp);
if (tp->t_template == 0) {
in_pcbdisconnect(inp);
+ dropsocket = 0; /* socket is already gone */
inp->inp_laddr = laddr;
tp = 0;
goto drop;
inp->inp_laddr = laddr;
tp = 0;
goto drop;
else {
TCPT_RANGESET(tp->t_timer[TCPT_REXMT],
tcp_beta * tp->t_srtt, TCPTV_MIN, TCPTV_MAX);
else {
TCPT_RANGESET(tp->t_timer[TCPT_REXMT],
tcp_beta * tp->t_srtt, TCPTV_MIN, TCPTV_MAX);
tp->t_rxtshift = 0;
}
if (acked > so->so_snd.sb_cc) {
tp->t_rxtshift = 0;
}
if (acked > so->so_snd.sb_cc) {
if (so->so_state & SS_CANTRCVMORE)
soisdisconnected(so);
tp->t_state = TCPS_FIN_WAIT_2;
if (so->so_state & SS_CANTRCVMORE)
soisdisconnected(so);
tp->t_state = TCPS_FIN_WAIT_2;
+ /*
+ * This is contrary to the specification,
+ * but if we haven't gotten our FIN in
+ * 5 minutes, it's not forthcoming.
+ */
* soreceive. It's hard to imagine someone
* actually wanting to send this much urgent data.
*/
* soreceive. It's hard to imagine someone
* actually wanting to send this much urgent data.
*/
- if (ti->ti_urp > tp->t_maxseg) { /* XXX */
+ if (ti->ti_urp > tp->rcv_wnd + 1) { /* XXX */
ti->ti_urp = 0; /* XXX */
tiflags &= ~TH_URG; /* XXX */
ti->ti_flags &= ~TH_URG; /* XXX */
ti->ti_urp = 0; /* XXX */
tiflags &= ~TH_URG; /* XXX */
ti->ti_flags &= ~TH_URG; /* XXX */
-/* tcp_output.c 6.3 84/08/29 */
+/* tcp_output.c 6.4 84/10/18 */
#include "param.h"
#include "systm.h"
#include "param.h"
#include "systm.h"
tp->snd_nxt != tp->snd_una) {
TCPT_RANGESET(tp->t_timer[TCPT_REXMT],
tcp_beta * tp->t_srtt, TCPTV_MIN, TCPTV_MAX);
tp->snd_nxt != tp->snd_una) {
TCPT_RANGESET(tp->t_timer[TCPT_REXMT],
tcp_beta * tp->t_srtt, TCPTV_MIN, TCPTV_MAX);
tp->t_rxtshift = 0;
}
tp->t_timer[TCPT_PERSIST] = 0;
tp->t_rxtshift = 0;
}
tp->t_timer[TCPT_PERSIST] = 0;
-/* tcp_timer.c 6.2 84/08/29 */
+/* tcp_timer.c 6.3 84/10/18 */
#include "param.h"
#include "systm.h"
#include "param.h"
#include "systm.h"