Subversion Repositories Kolibri OS

Rev

Rev 1543 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1543 Rev 1716
Line 14... Line 14...
14
;;          GNU GENERAL PUBLIC LICENSE                             ;;
14
;;          GNU GENERAL PUBLIC LICENSE                             ;;
15
;;             Version 2, June 1991                                ;;
15
;;             Version 2, June 1991                                ;;
16
;;                                                                 ;;
16
;;                                                                 ;;
17
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
17
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 18... Line 18...
18
 
18
 
Line 19... Line 19...
19
$Revision: 1543 $
19
$Revision: 1716 $
20
 
20
 
21
; Socket states
21
; Socket states
22
TCB_CLOSED		equ 0
22
TCB_CLOSED		equ 0
Line 777... Line 777...
777
	jz	@f
777
	jz	@f
Line 778... Line 778...
778
 
778
 
779
	test	[edx + TCP_segment.Flags], TH_ACK
779
	test	[edx + TCP_segment.Flags], TH_ACK
Line 780... Line 780...
780
	jz	.drop
780
	jz	.drop
-
 
781
 
Line 781... Line 782...
781
 
782
	mov	ebx, ECONNREFUSED
782
	;tp = tcp_drop(tp, ECONNREFUSED)
783
	call	TCP_drop
Line 783... Line 784...
783
 
784
 
Line 1061... Line 1062...
1061
; handle SYN-full and ACK-less segments
1062
; handle SYN-full and ACK-less segments
Line 1062... Line 1063...
1062
 
1063
 
1063
	test	[edx + TCP_segment.Flags], TH_SYN
1064
	test	[edx + TCP_segment.Flags], TH_SYN
Line 1064... Line 1065...
1064
	jz	@f
1065
	jz	@f
-
 
1066
 
-
 
1067
	mov	ebx, ECONNRESET
1065
 
1068
	call	TCP_drop
Line 1066... Line 1069...
1066
	;;; tcp_drop ( ECONNRESET)
1069
 
1067
	jmp	.drop_with_reset
1070
	jmp	.drop_with_reset
1068
 
1071
 
Line 1962... Line 1965...
1962
;-------------------------
1965
;-------------------------
1963
;
1966
;
1964
; TCP_drop
1967
; TCP_drop
1965
;
1968
;
1966
;  IN:  eax = socket ptr
1969
;  IN:  eax = socket ptr
-
 
1970
;       ebx = error number
1967
;
1971
;
1968
;  OUT: /
1972
;  OUT: eax = socket ptr
1969
;
1973
;
1970
;-------------------------
1974
;-------------------------
1971
align 4
1975
align 4
1972
TCP_drop:
1976
TCP_drop:
Line 1973... Line 1977...
1973
 
1977
 
Line 1974... Line 1978...
1974
	DEBUGF	1,"TCP_drop\n"
1978
	DEBUGF	1,"TCP_drop\n"
1975
 
1979
 
Line 1976... Line 1980...
1976
;        cmp     [eax + TCP_SOCKET.t_state], TCB_SYN_RECEIVED
1980
	cmp	[eax + TCP_SOCKET.t_state], TCB_SYN_RECEIVED
Line 1977... Line 1981...
1977
;        jl      .no_syn_received
1981
	jl	.no_syn_received
Line -... Line 1982...
-
 
1982
 
-
 
1983
	mov	[eax + TCP_SOCKET.t_state], TCB_CLOSED
-
 
1984
 
-
 
1985
	call	TCP_output
1978
 
1986
 
-
 
1987
;;; TODO: update stats
-
 
1988
 
-
 
1989
	jmp	TCP_close
-
 
1990
 
-
 
1991
  .no_syn_received:
-
 
1992
 
-
 
1993
;;; TODO: update stats
-
 
1994
 
Line 1979... Line -...
1979
	mov	[eax + TCP_SOCKET.t_state], TCB_CLOSED
-
 
Line -... Line 1995...
-
 
1995
;;; TODO: check if error code is "Connection timed out' and handle accordingly
-
 
1996
 
-
 
1997
	mov	[eax + SOCKET.errorcode], ebx
-
 
1998
 
-
 
1999
	jmp	TCP_close
-
 
2000
 
-
 
2001
 
-
 
2002
;-------------------------
-
 
2003
;
-
 
2004
; TCP_close
-
 
2005
;
-
 
2006
;  IN:  eax = socket ptr
-
 
2007
;  OUT: eax = socket ptr
-
 
2008
;
-
 
2009
;-------------------------
-
 
2010
align 4
Line 1980... Line 2011...
1980
 
2011
TCP_close: