pass go buffer as c buffer

master
fangdingjun 6 years ago
parent 00f5076672
commit ea3bef53e0

@ -237,10 +237,11 @@ func (c *Conn) Write(buf []byte) (n int, err error) {
return 0, nil return 0, nil
} }
cbuf := C.CBytes(buf) //cbuf := C.CBytes(buf)
defer C.free(cbuf) //defer C.free(cbuf)
ret := C.gnutls_record_send(c.sess.session, cbuf, C.size_t(len(buf))) ret := C.gnutls_record_send(c.sess.session,
unsafe.Pointer(&buf[0]), C.size_t(len(buf)))
n = int(ret) n = int(ret)
if n < 0 { if n < 0 {
@ -380,10 +381,10 @@ func onDataReadCallback(d unsafe.Pointer, cbuf *C.char, bufLen C.int) C.int {
log.Println(err) log.Println(err)
return -1 return -1
} }
cbuf2 := C.CBytes(buf[:n]) //cbuf2 := C.CBytes(buf[:n])
// d := C.CString(string(buf[:n])) // d := C.CString(string(buf[:n]))
defer C.free(cbuf2) //defer C.free(cbuf2)
C.memcpy(unsafe.Pointer(cbuf), unsafe.Pointer(cbuf2), C.size_t(n)) C.memcpy(unsafe.Pointer(cbuf), unsafe.Pointer(&buf[0]), C.size_t(n))
return C.int(n) return C.int(n)
} }

Loading…
Cancel
Save