Subversion Repositories Kolibri OS

Rev

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

Rev 1830 Rev 1831
Line 11... Line 11...
11
;;         GNU GENERAL PUBLIC LICENSE                              ;;
11
;;         GNU GENERAL PUBLIC LICENSE                              ;;
12
;;          Version 2, June 1991                                   ;;
12
;;          Version 2, June 1991                                   ;;
13
;;                                                                 ;;
13
;;                                                                 ;;
14
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
14
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 15... Line 15...
15
 
15
 
Line 16... Line 16...
16
$Revision: 1830 $
16
$Revision: 1831 $
Line 17... Line 17...
17
 
17
 
Line 499... Line 499...
499
	jne	@f
499
	jne	@f
500
	call	SOCKET_find_port
500
	call	SOCKET_find_port
501
       @@:
501
       @@:
Line 502... Line 502...
502
 
502
 
503
	mov	[eax + TCP_SOCKET.timer_persist], 0
503
	mov	[eax + TCP_SOCKET.timer_persist], 0
504
	mov	[eax + TCP_SOCKET.t_state], TCB_SYN_SENT
504
	mov	[eax + TCP_SOCKET.t_state], TCPS_SYN_SENT
505
	push	[TCP_sequence_num]
505
	push	[TCP_sequence_num]
506
	add	[TCP_sequence_num], 6400
506
	add	[TCP_sequence_num], 6400
507
	pop	[eax + TCP_SOCKET.ISS]
507
	pop	[eax + TCP_SOCKET.ISS]
Line 583... Line 583...
583
	mov	edx, MAX_backlog
583
	mov	edx, MAX_backlog
584
       @@:
584
       @@:
Line 585... Line 585...
585
 
585
 
586
	mov	[eax + SOCKET.backlog], dx
586
	mov	[eax + SOCKET.backlog], dx
587
	or	[eax + SOCKET.options], SO_ACCEPTCON
587
	or	[eax + SOCKET.options], SO_ACCEPTCON
Line 588... Line 588...
588
	mov	[eax + TCP_SOCKET.t_state], TCB_LISTEN
588
	mov	[eax + TCP_SOCKET.t_state], TCPS_LISTEN
589
 
589
 
590
	push	eax
590
	push	eax
Line 664... Line 664...
664
	je	.tcp
664
	je	.tcp
Line 665... Line 665...
665
 
665
 
Line 666... Line 666...
666
	jmp	s_error
666
	jmp	s_error
667
 
667
 
668
  .tcp:
668
  .tcp:
Line 669... Line 669...
669
	cmp	[eax + TCP_SOCKET.t_state], TCB_SYN_RECEIVED	; state must be LISTEN, SYN_SENT or CLOSED
669
	cmp	[eax + TCP_SOCKET.t_state], TCPS_SYN_RECEIVED	 ; state must be LISTEN, SYN_SENT or CLOSED
670
	jl	.free
670
	jl	.free
Line 847... Line 847...
847
;               dd      level, optname, optval, optlen
847
;               dd      level, optname, optval, optlen
848
;  OUT: -1 on error
848
;  OUT: -1 on error
849
;
849
;
850
; At moment, uses only pseudo-optname -2 for get last_ack_number for TCP.
850
; At moment, uses only pseudo-optname -2 for get last_ack_number for TCP.
851
; TODO: find best way to notify that send()'ed data were acknowledged
851
; TODO: find best way to notify that send()'ed data were acknowledged
852
; Also pseudo-optname -3 is valid and returns socket state, one of TCB_*.
852
; Also pseudo-optname -3 is valid and returns socket state, one of TCPS_*.
853
;
853
;
854
;-----------------------------------------------------------------
854
;-----------------------------------------------------------------
855
align 4
855
align 4
856
SOCKET_get_opt:
856
SOCKET_get_opt:
Line 1736... Line 1736...
1736
 
1736
 
1737
align 4
1737
align 4
Line 1738... Line 1738...
1738
SOCKET_cant_recv_more:
1738
SOCKET_cant_recv_more:
1739
 
1739
 
-
 
1740
	ret
-
 
1741
 
-
 
1742
 
-
 
1743
 
-
 
1744
;-----------------------------------------------------------------
-
 
1745
;
-
 
1746
; SOCKET_is_connected
-
 
1747
;
-
 
1748
;  IN:  eax = socket ptr
-
 
1749
;  OUT: /
-
 
1750
;
-
 
1751
;-----------------------------------------------------------------
-
 
1752
 
-
 
1753
align 4
-
 
1754
SOCKET_is_connected:
-
 
1755
 
-
 
1756
 
-
 
1757
	and	[eax + SOCKET.options], not (SS_ISCONNECTING + SS_ISDISCONNECTING + SS_ISCONFIRMING)
-
 
1758
	or	[eax + SOCKET.options], SS_ISCONNECTED
-
 
1759
 
1740
	ret
1760
	jmp	SOCKET_notify_owner