udp-one-shot.lisp - clic - Clic is an command line interactive client for gopher written in Common LISP
 (HTM) git clone git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/clic/
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Tags
 (DIR) README
 (DIR) LICENSE
       ---
       udp-one-shot.lisp (4259B)
       ---
            1 ;;;; -*- Mode: LISP; Base: 10; Syntax: ANSI-Common-lisp; Package: USOCKET-TEST -*-
            2 
            3 (in-package :usocket-test)
            4 
            5 ;; Test code from "INVALID-ARGUMENT-ERROR on socket-receive (#48)"
            6 
            7 ;; Author: @4lph4-Ph4un
            8 ;; Environment: SBCL 1.4.16, WSL on Windows 10
            9 
           10 (defun UDP-one-shot-V1 (&optional (port 1232))
           11   (let ((socket (usocket:socket-connect
           12                  nil
           13                  nil
           14                  :protocol     :datagram
           15                  :element-type '(unsigned-byte 8)
           16                  :local-host   "127.0.0.1"
           17                  :local-port   port))
           18         (buffer (make-array 8 :element-type '(unsigned-byte 8))))
           19     (unwind-protect
           20          (multiple-value-bind (received size remote-host remote-port)
           21              ;; NOTE: An explicit buffer can be given. If the length
           22              ;; is nil buffer's length will be used.
           23              (usocket:socket-receive socket buffer 8)
           24            (format t "~A~%" received)
           25            (usocket:socket-send socket
           26                                 (reverse received)
           27                                 size
           28                                 :host remote-host
           29                                 :port remote-port))
           30       (usocket:socket-close socket))))
           31 
           32 #|
           33 Backtrace:
           34   0: (USOCKET::HANDLE-CONDITION #<SB-BSD-SOCKETS:INVALID-ARGUMENT-ERROR {100375B833}> #<USOCKET:DATAGRAM-USOCKET {100375B773}>)
           35       Locals:
           36         CONDITION = #<SB-BSD-SOCKETS:INVALID-ARGUMENT-ERROR {100375B833}>
           37         SOCKET = #<USOCKET:DATAGRAM-USOCKET {100375B773}>
           38   1: (SB-KERNEL::%SIGNAL #<SB-BSD-SOCKETS:INVALID-ARGUMENT-ERROR {100375B833}>)
           39       Locals:
           40         CONDITION = #<SB-BSD-SOCKETS:INVALID-ARGUMENT-ERROR {100375B833}>
           41         HANDLER-CLUSTERS = (((#<SB-KERNEL::CLASSOID-CELL SB-IMPL::EVAL-ERROR> . #<CLOSURE # {7F0C5FD9DE0B}>)) ((#<SB-KERNEL::CLASSOID-CELL SB-C:COMPILER-ERROR> . #<FUNCTION # {5222748B}>)) ..)
           42   2: (ERROR SB-BSD-SOCKETS:INVALID-ARGUMENT-ERROR :ERRNO 22 :SYSCALL "recvfrom")
           43       Locals:
           44         CONDITION = #<SB-BSD-SOCKETS:INVALID-ARGUMENT-ERROR {100375B833}>
           45         #:G8039 = SB-BSD-SOCKETS:INVALID-ARGUMENT-ERROR
           46         SB-DEBUG::MORE = (:ERRNO 22 :SYSCALL "recvfrom")
           47   3: (SB-BSD-SOCKETS:SOCKET-ERROR "recvfrom" 22)
           48       Locals:
           49         ERRNO = 22
           50         WHERE = "recvfrom"
           51   4: ((FLET SB-BSD-SOCKETS::WITH-SOCKET-ADDR-THUNK :IN SB-BSD-SOCKETS:SOCKET-RECEIVE) #<SB-ALIEN-INTERNALS:ALIEN-VALUE :SAP #X7F0C58001230 :TYPE (* (SB-ALIEN:STRUCT SB-BSD-SOCKETS-INTERNAL::SOCKADDR-IN (SB..
           52       Locals:
           53         SB-BSD-SOCKETS::COPY-BUFFER = #<SB-ALIEN-INTERNALS:ALIEN-VALUE :SAP #X7F0C58001250 :TYPE (* (ARRAY (SB-ALIEN:UNSIGNED 8) 1))>
           54         SB-BSD-SOCKETS::SIZE = 16
           55         SB-BSD-SOCKETS::SOCKADDR = #<SB-ALIEN-INTERNALS:ALIEN-VALUE :SAP #X7F0C58001230 :TYPE (* ..)>
           56   5: (SB-BSD-SOCKETS::CALL-WITH-SOCKET-ADDR #<SB-BSD-SOCKETS:INET-SOCKET 127.0.0.1:1232, fd: 3 {100375B203}> NIL #<CLOSURE (FLET SB-BSD-SOCKETS::WITH-SOCKET-ADDR-THUNK :IN SB-BSD-SOCKETS:SOCKET-RECEIVE) {7..
           57       Locals:
           58         SOCKADDR = #<SB-ALIEN-INTERNALS:ALIEN-VALUE :SAP #X7F0C58001230 :TYPE (* ..)>
           59         SOCKADDR-ARGS = NIL
           60         SOCKET = #<SB-BSD-SOCKETS:INET-SOCKET 127.0.0.1:1232, fd: 3 {100375B203}>
           61         THUNK = #<CLOSURE (FLET SB-BSD-SOCKETS::WITH-SOCKET-ADDR-THUNK :IN SB-BSD-SOCKETS:SOCKET-RECEIVE) {7F0C5FD9DB8B}>
           62   6: ((:METHOD SB-BSD-SOCKETS:SOCKET-RECEIVE (SB-BSD-SOCKETS:SOCKET T T)) #<SB-BSD-SOCKETS:INET-SOCKET 127.0.0.1:1232, fd: 3 {100375B203}> #(0 0 0 0 0 0 ...) 8 :OOB NIL :PEEK NIL :WAITALL NIL :DONTWAIT NIL..
           63       Locals:
           64         #:.DEFAULTING-TEMP. = (UNSIGNED-BYTE 8)
           65         SB-BSD-SOCKETS::BUFFER = #(0 0 0 0 0 0 ...)
           66         SB-BSD-SOCKETS::BUFFER#1 = #(0 0 0 0 0 0 ...)
           67         SB-BSD-SOCKETS::DONTWAIT = NIL
           68         SB-BSD-SOCKETS::ELEMENT-TYPE = (UNSIGNED-BYTE 8)
           69         LENGTH = 8
           70         LENGTH#1 = 8
           71         SB-BSD-SOCKETS::OOB = NIL
           72         SB-BSD-SOCKETS::PEEK = NIL
           73         SB-BSD-SOCKETS:SOCKET = #<SB-BSD-SOCKETS:INET-SOCKET 127.0.0.1:1232, fd: 3 {100375B203}>
           74         SB-BSD-SOCKETS::WAITALL = NIL
           75   7: ((:METHOD USOCKET:SOCKET-RECEIVE (USOCKET:DATAGRAM-USOCKET T T)) #<USOCKET:DATAGRAM-USOCKET {100375B773}> #(0 0 0 0 0 0 ...) 8 :ELEMENT-TYPE (UNSIGNED-BYTE 8)) [fast-method]
           76       Locals:
           77         USOCKET::BUFFER = #(0 0 0 0 0 0 ...)
           78         USOCKET::ELEMENT-TYPE = (UNSIGNED-BYTE 8)
           79         LENGTH = 8
           80         USOCKET:SOCKET = #<USOCKET:DATAGRAM-USOCKET {100375B773}>
           81   8: (MASTER-CLASS/SRC/SERVER-03:UDP-ONE-SHOT-V1 1232)
           82       Locals:
           83         PORT = 1232
           84         SOCKET = #<USOCKET:DATAGRAM-USOCKET {100375B773}>
           85 |#
           86